Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Enumerableモジュール > max
max -> object | nil
[permalink][rdoc]max(n) -> Array
最大の要素、もしくは最大の n 要素を返します。 全要素が互いに <=> メソッドで比較できることを仮定しています。
引数を指定しない形式では要素が存在しなければ nil を返します。 引数を指定する形式では、空の配列を返します。 該当する要素が複数存在する場合、どの要素を返すかは不定です。
例:
a = %w(albatross dog horse) a.max # => "horse" a.max(2) # => ["horse", "dog"]
max {|a, b| ... } -> object | nil
[permalink][rdoc]max(n) {|a, b| ... } -> Array
ブロックの評価結果で各要素の大小判定を行い、最大の要素、もしくは最小の n 要素を返します。 引数を指定しない形式では要素が存在しなければ nil を返します。 引数を指定する形式では、空の配列を返します。
ブロックの値は、a > b のとき正、 a == b のとき 0、a < b のとき負の整数を、期待しています。
該当する要素が複数存在する場合、どの要素を返すかは不定です。
例:
class Person attr_reader :name, :age def initialize(name, age) @name = name @age = age end end people = [ Person.new("sato", 55), Person.new("sato", 33), Person.new("sato", 11), Person.new("suzuki", 55), Person.new("suzuki", 33), Person.new("suzuki", 11), Person.new("tanaka", 55), Person.new("tanaka", 33), Person.new("tanaka", 11) ] # 年齢が最大、名前が最小 people.max { |x, y| (x.age <=> y.age).nonzero? || y.name <=> x.name } # => #<Person:0x007fc54b0240a0 @name="sato", @age=55> people.max(2) { |x, y| (x.age <=> y.age).nonzero? || y.name <=> x.name } # => [#<Person:0x007fc54b0240a0 @name="sato", @age=55>, #<Person:0x007fc54c033ea0 @name="suzuki", @age=55>]