Rubyリファレンス: Home

minmax_by (Enumerable)

Edit   History

Ruby 1.8.7 Ruby 1.9

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

enum.minmax_by {|item| block }

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

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

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

animals = ["mouse", "cat", "hippopotamus", "giraffe"]
min, max = animals.minmax_by {|anim| anim.size }
puts min + " and " + max
cat and hippopotamus

関連項目