Ruby on Rails имеет метод String#starts_with?
, который реализован в Ruby с
# 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
, тогда как Ruby, начиная с версии 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?
до start_with?
?
Они хотят поддерживать совместимость с Ruby 1.8.6, или они обеспокоены тем, что start_with?
может вести себя иначе, чем starts_with?
, или они не видели необходимости обновлять код?