diff options
author | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-05-28 09:12:28 +0000 |
---|---|---|
committer | knu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-05-28 09:12:28 +0000 |
commit | a44e1e86b4970810ecc51c41e47f9bc21f55730c (patch) | |
tree | 2dce5a0db0676e66e076dfdc39b5265bc6aa6cd0 | |
parent | 9a9a7c364ec3e808617d54a2c339c8b62be56384 (diff) | |
download | ruby-a44e1e86b4970810ecc51c41e47f9bc21f55730c.tar.gz ruby-a44e1e86b4970810ecc51c41e47f9bc21f55730c.tar.xz ruby-a44e1e86b4970810ecc51c41e47f9bc21f55730c.zip |
* array.c (rb_ary_nitems, Init_Array): Axe Array#nitems().
cf. [ruby-dev:34676]-[ruby-dev:34713]
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@16675 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | array.c | 41 | ||||
-rw-r--r-- | doc/NEWS | 3 | ||||
-rw-r--r-- | test/ruby/test_array.rb | 12 |
4 files changed, 7 insertions, 54 deletions
@@ -1,3 +1,8 @@ +Wed May 28 18:05:28 2008 Akinori MUSHA <knu@iDaemons.org> + + * array.c (rb_ary_nitems, Init_Array): Axe Array#nitems(). + cf. [ruby-dev:34676]-[ruby-dev:34713] + Wed May 28 17:50:32 2008 Nobuyoshi Nakada <nobu@ruby-lang.org> * win32/mkexports.rb (Exports#objdump, Exports#each_line): extracted. @@ -2747,46 +2747,6 @@ rb_ary_compact(VALUE ary) /* * call-seq: - * array.nitems -> int - * array.nitems { |item| block } -> int - * - * Returns the number of non-<code>nil</code> elements in _self_. - * If a block is given, the elements yielding a true value are - * counted. - * - * May be zero. - * - * [ 1, nil, 3, nil, 5 ].nitems #=> 3 - * [5,6,7,8,9].nitems { |x| x % 2 != 0 } #=> 3 - */ - -static VALUE -rb_ary_nitems(VALUE ary) -{ - long n = 0; - - if (rb_block_given_p()) { - long i; - - for (i=0; i<RARRAY_LEN(ary); i++) { - VALUE v = RARRAY_PTR(ary)[i]; - if (RTEST(rb_yield(v))) n++; - } - } - else { - VALUE *p = RARRAY_PTR(ary); - VALUE *pend = p + RARRAY_LEN(ary); - - while (p < pend) { - if (!NIL_P(*p)) n++; - p++; - } - } - return LONG2NUM(n); -} - -/* - * call-seq: * array.count(obj) -> int * array.count { |item| block } -> int * @@ -3519,7 +3479,6 @@ Init_Array(void) rb_define_method(rb_cArray, "compact!", rb_ary_compact_bang, 0); rb_define_method(rb_cArray, "flatten", rb_ary_flatten, -1); rb_define_method(rb_cArray, "flatten!", rb_ary_flatten_bang, -1); - rb_define_method(rb_cArray, "nitems", rb_ary_nitems, 0); rb_define_method(rb_cArray, "count", rb_ary_count, -1); rb_define_method(rb_cArray, "shuffle!", rb_ary_shuffle_bang, 0); rb_define_method(rb_cArray, "shuffle", rb_ary_shuffle, 0); @@ -7,6 +7,8 @@ Incompatible (Severe) o Block arguments o New semantics for block arguments o Block local variables + * Array + o Array#nitems was removed (use count {|i| i}) * String o No longer an Enumerable o ?c semantics @@ -33,7 +35,6 @@ Incompatible (Trivial) o SecurityError o Removed Exception#to_str [Ruby2] * Array - o Array#nitems o Array#[m,n] = nil places nil in the array. * Hash o Hash#to_s is equivalent to Hash#inspect diff --git a/test/ruby/test_array.rb b/test/ruby/test_array.rb index 5618d1545..035b70ad2 100644 --- a/test/ruby/test_array.rb +++ b/test/ruby/test_array.rb @@ -827,14 +827,6 @@ class TestArray < Test::Unit::TestCase assert_equal(@cls[], a) end - def test_nitems - assert_equal(0, @cls[].nitems) - assert_equal(1, @cls[1].nitems) - assert_equal(1, @cls[1, nil].nitems) - assert_equal(1, @cls[nil, 1].nitems) - assert_equal(3, @cls[1, nil, nil, 2, nil, 3, nil].nitems) - end - def test_pack a = @cls[*%w( cat wombat x yy)] assert_equal("catwomx yy ", a.pack("A3A3A3A3")) @@ -1513,10 +1505,6 @@ class TestArray < Test::Unit::TestCase assert_equal(a.hash, b.hash) end - def test_nitems2 - assert_equal(3, [5,6,7,8,9].nitems { |x| x % 2 != 0 }) - end - def test_flatten2 a = [] a << a |