From: Rick DeNatale Date: 2008-01-11T03:55:33+09:00 Subject: Re: Array#count returning an enumerator On 1/10/08, Yukihiro Matsumoto wrote: > Hi, > > In message "Re: Array#count returning an enumerator" > on Thu, 10 Jan 2008 20:16:08 +0900, "David A. Black" writes: > > |> ary.count.with_index{|x,i|...} > | > |What does that give you that's different from ary.each.with_index? > > It returns count of items for which block gives true. > > ary = [1,2,3,4] > p ary.count.with_index{|x,i| i%2 == 0} # => 2 > p ary.each.with_index{|x,i| i%2 == 0} # => [1,2,3,4] Matz, The RDOC indicates that Enumerable#count returns an int in all cases. Or at least it did for the version of Ruby 1.9 from just before the 1.9.0 release. Unfortunately, I dont know what it says now because I refreshed from SVN yesterday and now I get: shadowfax:~ rick$ ri1.9 Enumerable#count /usr/local/lib/ruby/1.9.0/rdoc/ri/driver.rb:321:in `block in populate_class_cache': undefined method `[]' for # (NoMethodError) from /usr/local/lib/ruby/1.9.0/rdoc/ri/driver.rb:319:in `each' from /usr/local/lib/ruby/1.9.0/rdoc/ri/driver.rb:319:in `populate_class_cache' from /usr/local/lib/ruby/1.9.0/rdoc/ri/driver.rb:237:in `class_cache' from /usr/local/lib/ruby/1.9.0/rdoc/ri/driver.rb:354:in `block in run' from /usr/local/lib/ruby/1.9.0/rdoc/ri/driver.rb:351:in `each' from /usr/local/lib/ruby/1.9.0/rdoc/ri/driver.rb:351:in `run' from /usr/local/lib/ruby/1.9.0/rdoc/ri/driver.rb:200:in `run' from /usr/local/bin/ri1.9:5:in `
' shadowfax:~ rick$ ri1.9 /usr/local/lib/ruby/1.9.0/rdoc/ri/driver.rb:321:in `block in populate_class_cache': undefined method `[]' for # (NoMethodError) from /usr/local/lib/ruby/1.9.0/rdoc/ri/driver.rb:319:in `each' from /usr/local/lib/ruby/1.9.0/rdoc/ri/driver.rb:319:in `populate_class_cache' from /usr/local/lib/ruby/1.9.0/rdoc/ri/driver.rb:237:in `class_cache' from /usr/local/lib/ruby/1.9.0/rdoc/ri/driver.rb:382:in `select_classes' from /usr/local/lib/ruby/1.9.0/rdoc/ri/driver.rb:349:in `run' from /usr/local/lib/ruby/1.9.0/rdoc/ri/driver.rb:200:in `run' from /usr/local/bin/ri1.9:5:in `
' shadowfax:~ rick$ ri1.9 -v ri1.9 2.0.0 shadowfax:~ rick$ ruby1.9 -v ruby 1.9.0 (2008-01-10 revision 0) [i686-darwin8.11.1] -- Rick DeNatale My blog on Ruby http://talklikeaduck.denhaven2.com/