gpt4 book ai didi

ruby - 方法 `each` 给出了冲突的结果

转载 作者:数据小太阳 更新时间:2023-10-29 08:22:22 26 4
gpt4 key购买 nike

我正在处理一些 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

如果有人能解释这是怎么回事,我将不胜感激。

最佳答案

each 返回要迭代的集合的 Enumerator,所以

Enumerator.is_a? Fixnum # => false

试试这个:

def array_of_fixnums?(array)
array.all? { |x| x.is_a? Fixnum }
end

关于ruby - 方法 `each` 给出了冲突的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31189236/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com