今回はRubyの範囲について解説していきます
目次
✔ 本記事の内容
記事の内容
範囲とは?
〇〇~〇〇まで範囲を作る
範囲の中に値が存在するか?調べる
〇〇~〇〇までの範囲をeachメソッドで処理する
Rubyの範囲ってなに?
範囲を作ってどうやって使うの?
と思っている方に向けた記事になっています
範囲とは?
「1~10まで」「a~gまで」のように、一般的な範囲と同じになります
この範囲をRubyでは、簡単に作ることができます
またRubyでは範囲のことを範囲(Range)オブジェクトと言います
範囲オブジェクトは「 .. 」と「 ... 」で作っていくので、作り方を見ていきましょう!
範囲オブジェクトの作り方
範囲オブジェクトの作り方には、
- 「最後の値を含む」
- 「最後の値を含まない」
範囲の作り方があります
最後の値を含む
..
#範囲
初めの値..最後の値
#例
1..5
「 .. 」を使用した範囲では最後の値を含む範囲を作ることができます
「 .. 」ドット2つで作っていきます
詳しく解説します
#範囲
1..5
#含まれる数
1,2,3,4,5
このように1..5とした場合は1~5までの数字の範囲を作る事が出来ます
最後の範囲を含まない
...
#範囲
初めの値..最後の値
#例
1..5
「 ... 」を使用した範囲では最後の値を含まない範囲を作ることができます
「 ... 」ドット3つで作ります
詳しく解説します
#範囲
1...5
#含まれる数
1,2,3,4
このように1...5とした場合は1~4までの数字の範囲を作る事が出来ます
範囲の中に指定した値が存在するか?を調べる
「範囲の中に指定した値が存在するか?」を調べるinclude?メソッドを紹介します
include?メソッド
#include?メソッド
範囲オブジェクト.include?(調べたい値)
#例
numbers = 1..5
numbers.include?(3) true
numbers.include?(10) false
numbersの中に1,2,3,4,5と範囲オブジェクトが格納されています
その1,2,3,4,5の中に3と10は存在するのか?を調べています
- numbers.include?(3) → true こちら「3」は存在している為、trueと出ています
- numbers.include?(10) → false こちら「10」は存在していない為、falseとでています
この様に、includeメソッドを使う事で、範囲の中に指定した値が存在するのか?を調べることが出来ます
〇〇~〇〇までの範囲をeachメソッドで処理する
eachメソッドを使う事で「〇〇~〇〇までの範囲を処理していく」という事を行うことができます
#構文
範囲オブジェクト.each do |変数|
処理
end
eachメソッドを使う場合は、範囲オブジェクトに対して直接eachメソッドを当てていきます
具体的な例を見て見ましょう!
#例
(1..10).each do |n|
if n % 2 == 0
puts "2で割り切れる数字は#{n}です"
end
end
こちらは、1~10までの間に2で割り切れる数字を探しています
※「if文」「 %」「 #{}」「 eachメソッド」を使っているので、分からない所があれば下記から見てみてください
=>if文の使い方
=>%の使い方
=>#{}の使い方
=>eachの使い方
実行結果はこの様になります
#例
(1..10).each do |n|
if n % 2 == 0
puts "2で割り切れる数字は#{n}です"
end
end
#実行結果
2で割り切れる数字は2です
2で割り切れる数字は4です
2で割り切れる数字は6です
2で割り切れる数字は8です
2で割り切れる数字は10です
詳しく解説
- (1..10)とすることで1~10までの範囲オブジェクトを作る事ができます
- 1~10までに対してeachメソッドを使用し、1,2,3...と順番に処理し繰り返していきます
- 初めに1という数字が取られ、nの変数に代入されます
- 次のif文で1 % 2が実行されると答えは1になります
- 1 == 0はfalseになるため実行はここで終了し、次に2という数字がnに代入されます
- 2 % 2の結果は0になり、0 == 0はtrueとなるため「2で割り切れる数字は2です」という結果が出力されます
- これを3,4,5...と10まで繰り返します
以上が範囲を使ったeachメソッドの使い方でした!
eachメソッドと範囲オブジェクトを組み合わせる事で、様々な事が実現できそうですね!
まとめ
- 範囲は「..」と「...」でつくる
- 「..」は最後の値を含む
- 「...」は最後の値を含まない
- 範囲の中身が存在するのか?を調べるにはinclude?メソッドを使う