こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在4社経験している、11年目エンジニアです。
この記事では、 Rubyで配列の最大の要素を取得できるmaxメソッドについて
- maxメソッドとは
- maxメソッドを使ったサンプルプログラム
と、この記事で丁寧に解説していきます。
前提条件:実行環境について
実行環境は以下の通りです。
OS | Windows10 |
---|---|
Rubyのバージョン | 2.6.6 |
Rubyのインストールは、下の記事をご参考ください。
maxメソッドとは
maxメソッドとは、指定した配列の要素から最大値を返すメソッドです。
maxメソッドは使い方が
- パターン1:引数がない場合
- パターン2:引数がある場合
の合計2パターンあります。
それぞれ解説します。
パターン1:引数がない場合
引数がない場合は、配列の中から最大の要素を返します。
使い方サンプルは以下です。
1 2 |
sample = [5, 8, -6, 15] result = sample.max |
上記の例だと、resultには
1 |
15 |
が返されます。
もし配列が空だった場合、nilを返します。
パターン2:引数がある場合
引数がある場合は、引数で指定した数だけ最大の要素を降順の配列で返します。
使い方サンプルは以下です。
1 2 |
sample = [5, 8, -6, 15] result = sample.max(2) |
上記の例だと、resultには
1 |
[15, 8] |
という配列が返されます。
もし配列の要素数より大きい数を引数に指定した場合、配列が降順に直して返します。
注意点として、引数に
1 2 |
sample = [5, 8, -6, 15] result = sample.max(-6) |
と負の値を設定して実行すると
1 2 3 |
Traceback (most recent call last): 1: from arraymaxsample.rb:2:in `<main>' arraymaxsample.rb:2:in `max': negative size (-6) (ArgumentError) |
とシステムエラーとなります。
では、次の章で実際に使ってみます。
maxメソッドを解説するプログラムの概要
maxメソッドを解説するプログラムでは、
- パターン1:引数がない場合
- パターン2:引数がある場合
それぞれを
- 要素が数字の配列
- 要素が文字列の配列
- 要素が空の配列
の3種類の配列で各パターンのmaxメソッドを使い、結果を表示させます。
Rubyサンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
puts "■maxメソッドサンプル" # 確認する配列 numarray = [9, 8, 0, -6, 5] engarray = ['MAP', 'EOL', 'ZIP', 'ABC'] emparray = [] puts "・確認する配列" puts "数値の配列:#{numarray}" puts "英字の配列:#{engarray}" puts "空の配列 :#{emparray}" puts # パターン1:引数がない場合 puts "・パターン1:引数がない場合" puts "数値の配列:#{numarray.max}" puts "英字の配列:#{engarray.max}" puts "空の配列 :#{emparray.max}" puts # パターン2:引数がある場合 puts "・パターン2:引数がある場合" puts "数値の配列:#{numarray.max(2)}" puts "英字の配列:#{engarray.max(2)}" puts "空の配列 :#{emparray.max(2)}" |
実行結果
Rubyプログラムを実行するやり方は、以下の記事をご参考ください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
■maxメソッドサンプル ・確認する配列 数値の配列:[9, 8, 0, -6, 5] 英字の配列:["MAP", "EOL", "ZIP", "ABC"] 空の配列 :[] ・パターン1:引数がない場合 数値の配列:9 英字の配列:ZIP 空の配列 : ・パターン2:引数がある場合 数値の配列:[9, 8] 英字の配列:["ZIP", "MAP"] 空の配列 :[] |
指定した条件の通り、最大の要素が抽出できていることが確認できました!
まとめ:maxメソッドを使ってみよう!
以上がmaxメソッドについての解説でした!
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント