2011-08-17 7 views
4

私は通常['abc', 'defg'].max{|a, b| a.length <=> b.length}を実行しますが、これは両方のオブジェクトで同じメソッドの結果を比較するための余分なタイピングのようです。ブロックなしでmax/minのより簡潔なバージョン

['abc', 'defg'].max(:length)のような何かを行うより簡潔な方法がありますが、これは比較のために各オブジェクトに対して所定のメソッドを実行しますか?

答えて

8

これは、より簡潔である:

['abc', 'defg'].max_by{|x| x.length } 
+2

1 - 投票答え未満簡潔な、しかし、より読みやすいです。 – AdrianoFerrari

0

ハッシュの配列の場合:

roomies = [{:name => "Habib", :age => 24}, {:name => "Tyler", :age => 25}] 

roomies.max_by{|a| a[:age]}[:age] 

=> 25 
関連する問題