2010-10-05 105 views
11

我想單線程返回true/false,它測試數組中的每個元素是否爲整數。所以如果數組中的任何元素不是整數,它應該返回false,否則返回true。這裏是我的嘗試:Ruby - 測試每個數組元素,得到一個結果

>> ([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 

任何其他想法進一步提煉它?

回答

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

完美,謝謝了。 – oaklodge 2010-10-05 17:45:48

+0

感覺像魔術! – mko 2014-06-12 02:33:42

5
ary.all?(&Integer.method(:===)) 
+0

我真的希望Ruby有更好的訪問方法的語法。這在概念上更純粹,但實際上實際上比寫出明確的塊要長。 – Chuck 2010-10-05 17:38:21

+3

@Chuck:是的。每隔幾年就會出現一個想法,以便更好地區分'.'(消息發送)和'::'(範圍解析)操作符。目前,'.'表示消息發送,'::'表示範圍解析或消息發送。如果我們從'::'中刪除「或消息發送」部分,我們可以擴展它以允許像'foo :: bar'這樣的東西表示'foo.method(:bar)'。目前,這不起作用,因爲'foo :: bar'的含義與'foo.bar'相同。 – 2010-10-05 17:43:40

+0

我喜歡這個點自由風格.. :) – 2013-08-15 19:17:11

相關問題