http://rubymonk.com/learning/books/1/problems/148-array_of_fixnum
Ruby monk は次のように提案しています。
def array_of_fixnums?(array)
array.all? { |x| x.is_a? Fixnum }
end
これで問題ありませんが、次のコードは irb 1.9.2 で機能しますが、rubymonk が空の配列を渡すと失敗します。
def array_of_fixnums?(array)
result = false
array.each { |n|
if n.is_a? Fixnum
result = true
else
result = false
end }
result
end
ここにirb出力があります:
1.9.2-p320 :001 > array_of_fixnums? []
=> false
そして、これが私の解決策についてrubymonkが言っていることです:
returns 'true' for [1,2,3] ✔
returns 'false' for ['a',1,:b] ✔
returns 'true' for []
RSpec::Expectations::ExpectationNotMetError
expected false to be true
なぜそうなのか?
回答に基づいて更新します。
def array_of_fixnums?(array)
result = true
array.each { |n| return false unless n.is_a? Fixnum }
result
end