Ruby 它大于4 array.count{|i| i > 4} # =>6

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中,这是不可用的。

该数组共有6个元素>4个


我希望它能提供一些有关计数方法的信息。

我们有几种方法来确定数组中有多少个元素,比如
.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