我正在解决一些RubyMonk问题。问题是如果传递给方法的数组中的所有元素都是true
,则编写一个返回Fixnum
的方法。我想出的解决方案是:
arr = [1,2,3]
def array_of_fixnums?(array)
array.each.is_a? Fixnum
end
puts array_of_fixnums?(arr)
这会返回false
,我不明白为什么。我使用了这段代码,这让我更加困惑:
arr = [1,2,3]
arr.each do |x|
puts "#{x}, #{x.is_a? Fixnum}"
end
exit
返回:
1, true
2, true
3, true
如果有人能够解释这个问题,我将非常感谢澄清。
答案 0 :(得分:7)
each
返回集合的Enumerator
进行迭代,所以
Enumerator.is_a? Fixnum # => false
试试这个:
def array_of_fixnums?(array)
array.all? { |x| x.is_a? Fixnum }
end