私は通常['abc', 'defg'].max{|a, b| a.length <=> b.length}
を実行しますが、これは両方のオブジェクトで同じメソッドの結果を比較するための余分なタイピングのようです。ブロックなしでmax/minのより簡潔なバージョン
['abc', 'defg'].max(:length)
のような何かを行うより簡潔な方法がありますが、これは比較のために各オブジェクトに対して所定のメソッドを実行しますか?
私は通常['abc', 'defg'].max{|a, b| a.length <=> b.length}
を実行しますが、これは両方のオブジェクトで同じメソッドの結果を比較するための余分なタイピングのようです。ブロックなしでmax/minのより簡潔なバージョン
['abc', 'defg'].max(:length)
のような何かを行うより簡潔な方法がありますが、これは比較のために各オブジェクトに対して所定のメソッドを実行しますか?
['abcd', 'def'].max_by &:length
これは、より簡潔である:
['abc', 'defg'].max_by{|x| x.length }
ハッシュの配列の場合:
roomies = [{:name => "Habib", :age => 24}, {:name => "Tyler", :age => 25}]
roomies.max_by{|a| a[:age]}[:age]
=> 25
1 - 投票答え未満簡潔な、しかし、より読みやすいです。 – AdrianoFerrari