Rubyリファレンス: Home

max_by (Enumerable)

Edit   History

Ruby 1.8.7 Ruby 1.9

標準クラス・モジュール > Enumerable > max_by

enum.max_by {|item| block }

max_byメソッドは、ブロックの戻り値が最大値となる要素を返します。ブロック引数itemに要素を入れながらブロックを繰り返し実行し、ブロックの戻り値を集めます。集めた戻り値を<=>演算子で比較して、一番大きい戻り値に対応する要素を返します。

ブロックの戻り値に<=>で比較できないものが混じっていると例外ArgumentErrorが、<=>を実装していないものがあると例外NoMethodErrorが発生します。

次の例は、配列から一番長い文字列を取り出します。

animals = ["mouse", "cat", "hippopotamus", "giraffe"]
puts animals.max_by {|anim| anim.size }
hippopotamus

関連項目