Ruby 它大于4 array.count{|i| i > 4} # =>6
该数组共有6个元素>4个Ruby 它大于4 array.count{|i| i > 4} # =>6,ruby,activerecord,size,content-length,Ruby,Activerecord,Size,Content Length,该数组共有6个元素>4个 我希望它能提供一些有关计数方法的信息。我们有几种方法来确定数组中有多少个元素,比如.length、.count和.size。但是,最好使用array.size而不是array.count。因为.size的性能更好。您遇到的现象有时被称为:有多种方法可以做到这一点。这个口号来自Perl社区,Perl是Ruby的影响力之一。它们通常是彼此的别名——它们的作用相同。您还应该记住一种方法:Array#nitems,它返回数组中非零项的数量。但在Ruby 1.9中,这是不可用的。
我希望它能提供一些有关计数方法的信息。我们有几种方法来确定数组中有多少个元素,比如
.length
、.count
和.size
。但是,最好使用array.size
而不是array.count
。因为.size
的性能更好。您遇到的现象有时被称为:有多种方法可以做到这一点。这个口号来自Perl社区,Perl是Ruby的影响力之一。它们通常是彼此的别名——它们的作用相同。您还应该记住一种方法:Array#nitems
,它返回数组中非零项的数量。但在Ruby 1.9中,这是不可用的。如果有一个表,foo
,并且它有许多bar
,那么foo
中将有一个名为bar\u count
的列,该列在创建/销毁bar
时更新。使用foo.bar.size
检查该列(而不实际查询任何bar
)foo.bar.count
执行实际的查询,这将破坏缓存的用途。
> [1,2,3].count{|x| x > 2 }
=> 1
static VALUE
rb_ary_length(VALUE ary)
{
long len = RARRAY_LEN(ary);
return LONG2NUM(len);
}
static VALUE
rb_ary_count(int argc, VALUE *argv, VALUE ary)
{
long n = 0;
if (argc == 0) {
VALUE *p, *pend;
if (!rb_block_given_p())
return LONG2NUM(RARRAY_LEN(ary));
// etc..
}
}
<%= h(params.size.to_s) %> # works_like_that !
<%= h(params.count.to_s) %> # does_not_work_like_that !
array = [1,2,3,4,5,6,7,4,3,2,4,5,6,7,1,2,4]
array.size # => 17
array.length # => 17
array.count # => 17
array.count 2 # => 3
array.count{|i| i > 4} # =>6