我是Ruby的新手,我注入方法有一個奇怪的問題。使用Ruby注入時沒有類
當我這樣做:
(1..10).inject(0) {|count,x| count + 1}
結果是10,符合市場預期。但是,當我做
(1..10).inject(0) {|count,x| count + 1 if (x%2 == 0)}
我得到一個錯誤:
NoMethodError: undefined method `+' for nil:NilClass
from (irb):43
from (irb):43:in `inject'
from (irb):43:in `each'
from (irb):43:in `inject'
from (irb):43
我真的不明白爲什麼(大概)數在第二個例子中爲零,但不是第一個。無論如何,我將如何計算從1到10使用注入的平衡?
如果你使用Ruby 1.8.7+,您還可以使用可枚舉#計數,即'(1..10).Count之間(:偶)' – 2010-07-24 02:56:18
如何可愛! - – 2010-07-24 03:19:49
謝謝!這現在非常合理。就效率而言,注入方式更好,因爲它不會導致建立額外的數組。在這個例子中,這並不重要,但是如果我們從更大的範圍中選擇1000個值,該怎麼辦? – 2010-07-25 16:30:21