diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-03-18 23:48:15 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-03-18 23:48:15 +0900 |
| commit | 290faf88dfe87f05b833b9cc6cffc6ecebd246af (patch) | |
| tree | 5a1cf9cbb71bd375ea887b2fffea9af7f0f33409 | |
| parent | 53a282ac0e0da85994233dac1daabb6381669e51 (diff) | |
| parent | 17fdd815731490bd3d68233d6749a908646abbf2 (diff) | |
| download | mruby-290faf88dfe87f05b833b9cc6cffc6ecebd246af.tar.gz mruby-290faf88dfe87f05b833b9cc6cffc6ecebd246af.zip | |
Merge pull request #1887 from suzukaze/add-enumerable.count
Add Enumerable#count
| -rw-r--r-- | mrbgems/mruby-enum-ext/mrblib/enum.rb | 18 | ||||
| -rw-r--r-- | mrbgems/mruby-enum-ext/test/enum.rb | 7 |
2 files changed, 25 insertions, 0 deletions
diff --git a/mrbgems/mruby-enum-ext/mrblib/enum.rb b/mrbgems/mruby-enum-ext/mrblib/enum.rb index 90f321596..1ca62b673 100644 --- a/mrbgems/mruby-enum-ext/mrblib/enum.rb +++ b/mrbgems/mruby-enum-ext/mrblib/enum.rb @@ -208,4 +208,22 @@ module Enumerable a end end + + def count(v=nil, &block) + count = 0 + if block + self.each do |e| + count += 1 if block.call(e) + end + else + if v == nil + self.each { count += 1 } + else + self.each do |e| + count += 1 if e == v + end + end + end + count + end end diff --git a/mrbgems/mruby-enum-ext/test/enum.rb b/mrbgems/mruby-enum-ext/test/enum.rb index a14d7f492..065ef7f5f 100644 --- a/mrbgems/mruby-enum-ext/test/enum.rb +++ b/mrbgems/mruby-enum-ext/test/enum.rb @@ -53,3 +53,10 @@ assert("Enumerable#first") do assert_equal [1, 2, 3], a.first(10) assert_nil [].first end + +assert("Enumerable#count") do + a = [1, 2, 4, 2] + assert_equal 4, a.count + assert_equal 2, a.count(2) + assert_equal 3, a.count{|x| x % 2 == 0} +end |
