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