Ruby - 测试每个数组元素,得到一个结果

oak*_*dge 11 ruby arrays fold

我想要一个单行返回true/false,它测试数组中的每个元素是否为整数.因此,如果数组中的任何元素不是Integer,则应返回false,否则返回true.这是我的尝试:

>> ([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
Run Code Online (Sandbox Code Playgroud)

还有其他想法可以进一步提炼它吗?

Nak*_*lon 19

array.all?{ |x| x.is_a? Integer }
Run Code Online (Sandbox Code Playgroud)


Jör*_*tag 5

ary.all?(&Integer.method(:===))
Run Code Online (Sandbox Code Playgroud)

  • @Chuck:是的.每隔几年就会出现一个浮动的想法,以便更好地区分`.`(消息发送)和`::`(范围解析)运算符.目前,`.`表示消息发送,`::`表示范围结果或消息发送.如果我们从`::`中删除"或发送消息"部分,我们可以扩展它以允许像`foo :: bar`这样的东西来表示`foo.method(:bar)`.目前,这不起作用,因为`foo :: bar`的意思与`foo.bar`相同. (3认同)