概要
Enumerable#minmax_by
詳細
Enumerable#minmax_by ブロックの評価結果で判定を行い最小値と最大値を返します
サンプル
コード
# encoding: utf-8 class Person include Enumerable attr_accessor :name, :age def initialize(name, age) @name, @age = name, age end def <=>(other) self.name <=> other.name end end persons = [Person.new("tanaka", 20), Person.new("sato", 55), Person.new("suzuki", 77)] p persons p persons.minmax_by{|person|person.name} p persons.minmax_by{|person|person.age} p persons.minmax_by(&:name) p persons.minmax_by(&:age)
出力
[#<Person:0x2555250 @name="tanaka", @age=20>, #<Person:0x2555208 @name="sato", @age=55>, #<Person:0x25551c0 @name="suzuki", @age=77>] [#<Person:0x2555208 @name="sato", @age=55>, #<Person:0x2555250 @name="tanaka", @age=20>] [#<Person:0x2555250 @name="tanaka", @age=20>, #<Person:0x25551c0 @name="suzuki", @age=77>] [#<Person:0x2555208 @name="sato", @age=55>, #<Person:0x2555250 @name="tanaka", @age=20>] [#<Person:0x2555250 @name="tanaka", @age=20>, #<Person:0x25551c0 @name="suzuki", @age=77>]