Ruby_Array_37
この記事は、以下のドキュメントを改変(自分なりに整理)して利用しています。
class Array (Ruby 3.0.0 リファレンスマニュアル)
インスタンスメソッド
max -> object | nil
max(n) -> Array
- 最大の要素、もしくは最大のn要素が降順に入った配列を返す
- 全要素が互いに<=>メソッドで比較できることを仮定している
- 引数を指定しない形式では要素が存在しなければnilを返す
- 引数を指定する形式では要素が存在しなければ空の配列を返す
irb(main):001:0> [1, 3, 2].max => 3 irb(main):002:0> [1, 3, 2].max(2) => [3, 2] irb(main):003:0> [1, 3, 2].max(5) => [3, 2, 1]
irb(main):001:0> [].max => nil irb(main):002:0> [].max(1) => []
irb(main):001:0> [1, true, nil].max Traceback (most recent call last): 5: from /Users/mfham/.rbenv/versions/3.0.0/bin/irb:23:in `<main>' 4: from /Users/mfham/.rbenv/versions/3.0.0/bin/irb:23:in `load' 3: from /Users/mfham/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/irb-1.3.0/exe/irb:11:in `<top (required)>' 2: from (irb):1:in `<main>' 1: from (irb):1:in `max' ArgumentError (comparison of Integer with true failed)
max {|a, b| ... } -> object | nil
max(n) {|a, b| ... } -> Array
- ブロックの評価で各要素の大小判定を行い、最大の要素、もしくは最大の n 要素が降順に入った配列を返す
- ブロックの値は、a > b のとき正、 a == b のとき 0、a < b のとき負の整数を、期待している
- 引数を指定しない形式では要素が存在しなければnilを返す
- 引数を指定する形式では要素が存在しなければ空の配列を返す
irb(main):001:0> arr = %w[ab foobar hoge] => ["ab", "foobar", "hoge"] irb(main):002:0> arr.max {|a, b| a.size <=> b.size } => "foobar" irb(main):003:0> arr.max(2) {|a, b| a.size <=> b.size } => ["foobar", "hoge"] irb(main):004:0> arr.max(5) {|a, b| a.size <=> b.size } => ["foobar", "hoge", "ab"] irb(main):005:0>
irb(main):001:0> [].max {|a, b| a <=> b } => nil irb(main):002:0> [].max(1) {|a, b| a <=> b } => []
irb(main):001:0> [1, true, nil].max {|a, b| a <=> b } Traceback (most recent call last): 5: from /Users/mfham/.rbenv/versions/3.0.0/bin/irb:23:in `<main>' 4: from /Users/mfham/.rbenv/versions/3.0.0/bin/irb:23:in `load' 3: from /Users/mfham/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/irb-1.3.0/exe/irb:11:in `<top (required)>' 2: from (irb):1:in `<main>' 1: from (irb):1:in `max' ArgumentError (comparison of TrueClass with 1 failed)
min -> object | nil
min(n) -> Array
- 最小の要素、もしくは最小のn要素が昇順で入った配列を返す
- 全要素が互いに<=>メソッドで比較できることを仮定している
- 引数を指定しない形式では要素が存在しなければnilを返す
- 引数を指定する形式では要素が存在しなければ空の配列を返す
irb(main):001:0> [3, 1, 2].min => 1 irb(main):002:0> [3, 1, 2].min(2) => [1, 2] irb(main):003:0> [3, 1, 2].min(5) => [1, 2, 3]
irb(main):001:0> [].min => nil irb(main):002:0> [].min(1) => []
irb(main):001:0> [1, true, nil].min Traceback (most recent call last): 5: from /Users/mfham/.rbenv/versions/3.0.0/bin/irb:23:in `<main>' 4: from /Users/mfham/.rbenv/versions/3.0.0/bin/irb:23:in `load' 3: from /Users/mfham/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/irb-1.3.0/exe/irb:11:in `<top (required)>' 2: from (irb):1:in `<main>' 1: from (irb):1:in `min' ArgumentError (comparison of Integer with true failed)
min {|a, b| ... } -> object | nil
min(n) {|a, b| ... } -> Array
- ブロックの評価結果で各要素の大小判定を行い、最小の要素、もしくは最小のn要素が昇順で入った配列を返す
- ブロックの値は、a > b のとき正、 a == b のとき 0、a < b のとき負の整数を、期待している
- 引数を指定しない形式では要素が存在しなければnilを返す
- 引数を指定する形式では要素が存在しなければ空の配列を返す
irb(main):001:0> arr = %w[foobar ab hoge] => ["foobar", "ab", "hoge"] irb(main):002:0> arr.min {|a, b| a.size <=> b.size } => "ab" irb(main):003:0> arr.min(2) {|a, b| a.size <=> b.size } => ["ab", "hoge"] irb(main):004:0> arr.min(5) {|a, b| a.size <=> b.size } => ["ab", "hoge", "foobar"]
irb(main):001:0> [].min {|a, b| a <=> b } => nil irb(main):002:0> [].min(1) {|a, b| a <=> b } => []
irb(main):001:0> [1, true, nil].min {|a, b| a <=> b } Traceback (most recent call last): 5: from /Users/mfham/.rbenv/versions/3.0.0/bin/irb:23:in `<main>' 4: from /Users/mfham/.rbenv/versions/3.0.0/bin/irb:23:in `load' 3: from /Users/mfham/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/irb-1.3.0/exe/irb:11:in `<top (required)>' 2: from (irb):3:in `<main>' 1: from (irb):3:in `min' ArgumentError (comparison of TrueClass with 1 failed)