Ruby - 测试每个数组元素,获取一个结果

11
我想要一行代码来测试数组中的每个元素是否为整数,并返回true/false。如果数组中的任何一个元素不是整数,则应该返回false,否则返回true。这是我的尝试:
```ruby array.all? {|x| x.is_a? Integer} ```
>> ([2,1,4].map {|x| (x.is_a? Integer)}).reduce {|x, result| x and result}
=> true
>> ([2,"a",4].map {|x| (x.is_a? Integer)}).reduce {|x, result| x and result}
=> false

还有其他的想法可以进一步概括吗?

2个回答

19
array.all?{ |x| x.is_a? Integer }

4
ary.all?(&Integer.method(:===))

我真的希望 Ruby 有更好的语法来访问方法。这种方式在概念上更加纯粹,但实际上比写出显式块还要长。 - Chuck
3
@Chuck: 是的。有一个想法每隔几年就会浮出水面,旨在更好地区分 .(消息发送)和 ::(作用域解析)运算符。目前,.表示消息发送,而::则表示作用域解析或消息发送。如果我们从 :: 中删除“或消息发送”的部分,我们可以扩展它以允许像 foo::bar 这样的东西表示为 foo.method(:bar)。目前,这是不起作用的,因为 foo::bar 的含义与 foo.bar 相同。 - Jörg W Mittag

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接