Rubyリファレンス: Home

minmax (Enumerable)

Edit   History

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

enum.minmax

minmaxメソッドは、要素の最小値と最大値を調べます。各要素を<=>演算子で比較し、一番小さい要素(一番先にくる要素)と一番大きい要素(一番後ろにくる要素)を配列にして返します。

<=>で比較できない要素が混じっていると例外ArgumentErrorが、<=>を実装していない要素があると例外NoMethodErrorが発生します。

numbers = [47, 57, 17, 20, 47, 41, 5, 16, 63, 34]
p numbers.minmax
[5, 63]
enum.minmax {|a, b| block }

minmaxメソッドにブロックを渡すと、<=>演算子の代わりにブロックの戻り値によって要素を比較します。ブロック引数abには、比較する2要素が入ります。ブロックの戻り値が-1ならaが小さい、0なら同じ、1ならbが大きい、となります。

次の例は、要素をto_iメソッドで整数に変換して比較します。

numbers = ["4", 1, "21", 17, "8"]
p numbers.minmax {|a, b| a.to_i <=> b.to_i }
[1, "21"]

関連項目