这是完全相同的实现。
你可以在Ruby 2.3.1的源代码中看到它是一个别名:
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);
}
Array
中。如果你正在使用ActiveRecord
的Association
,那么有一些区别,就像你可以在这里看到的那样:
User.all
,那么你应该使用length
来避免另一个数据库查询。count
来对你的数据库进行计数查询。size
来自适应。