2
Ruby on Rails的具有方法String#starts_with?
,這是Ruby實現與爲什麼Rails實現String#starts_with方法?而不是別名start_with?
# File lib/active_support/core_ext/string/starts_ends_with.rb, line 22
def starts_with?(prefix)
prefix = prefix.to_s
self[0, prefix.length] == prefix
end
而紅寶石,由於1.8.7版本,具有方法String#start_with?
,其是用C
static VALUE
rb_str_start_with(int argc, VALUE *argv, VALUE str)
{
int i;
for (i=0; i<argc; i++) {
VALUE tmp = rb_check_string_type(argv[i]);
if (NIL_P(tmp)) continue;
rb_enc_check(str, tmp);
if (RSTRING_LEN(str) < RSTRING_LEN(tmp)) continue;
if (memcmp(RSTRING_PTR(str), RSTRING_PTR(tmp), RSTRING_LEN(tmp)) == 0)
return Qtrue;
}
return Qfalse;
}
爲什麼實現他們不只是有一個從starts_with?
到鏈接的別名?
他們是否希望保持與Ruby 1.8.6的兼容性,還是擔心可能與starts_with?
有不同的行爲,或者他們沒有看到需要更新代碼?
我在看http://as.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/StartsEndsWith.html - 那個文檔過時了嗎? –
是的,去http://as.rubyonrails.org,你會看到它是從2008年。目前使用的網站是http://api.rubyonrails.org –
Ouch。文檔失敗。如果舊網站將所有請求都包裝在一個表明它已過期的框架中,將會很好... – DGM