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
minmax
: 最大値と最小値を返す。Ruby 1.8.7