Rubyリファレンス: Home

max (Enumerable)

Edit   History

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

enum.max

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

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

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

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

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

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

関連項目