在Ruby中,“size”和“length”之间绝对没有任何区别吗?
在Ruby中,'size'和'length'之间没有任何区别。这个问题的出现是因为在Ruby的源代码中,可以看到'length'是'size'的别名。具体的实现可以在Ruby 2.3.1的源代码array.c中找到:
rb_define_alias(rb_cArray, "size", "length");
此外,如果使用pry和pry-doc进行检查,可以发现它们执行的是完全相同的代码:
[1] pry(main)> list = [1,2] => [1, 2] [2] pry(main)> $ list.size From: array.c (C Method): Owner: Array Visibility: public Number of lines: 6 static VALUE rb_ary_length(VALUE ary) { long len = RARRAY_LEN(ary); return LONG2NUM(len); } [3] pry(main)> $ list.length From: array.c (C Method): Owner: Array Visibility: public Number of lines: 6 static VALUE rb_ary_length(VALUE ary) { long len = RARRAY_LEN(ary); return LONG2NUM(len); }