Range 範囲
Range#.. Range#…
- 1..10 #=> 1から10
- 1…10 #=> 1から10未満(右端の値は含まない)
(1..5).to_a #=> [1, 2, 3, 4, 5]
(1...5).to_a #=> [1, 2, 3, 4]
('a'..'e').to_a #=> ["a", "b", "c", "d", "e"]
('a'...'e').to_a #=> ["a", "b", "c", "d"]
範囲オブジェクトの === は include? と同じ
ぶっちゃけ使わないけど、後述するcase式と相性が良いかも
(1..5).include?(5) #=> true
(1...5).include?(5) #=> false
(1..5) === 5 #=> true
(1...5) === 5 #=> false
イテレータ
forはスコープを作らない、みんな知ってるね
for i in 'a'..'e'
p i
end
"a"
"b"
"c"
"d"
"e"
=> "a".."e"
('a'..'e').each do |i|
p i
end
"a"
"b"
"c"
"d"
"e"
=> "a".."e"
文字列、配列の添字演算子に範囲オブジェクトを使う
[開始場所、長さ] で指定の他に範囲でもイケる
['a', 'b', 'c', 'd', 'e', 'f', 'g'][2, 4] #=> ["c", "d", "e", "f"] # これは前にやった例、[2]から4つ
['a', 'b', 'c', 'd', 'e', 'f', 'g'][2..4] #=> ["c", "d", "e"] # [2]から[4]
['a', 'b', 'c', 'd', 'e', 'f', 'g'][2...4] #=> ["c", "d"] # [2]から[4]未満(右端の値は含まない)
'abcdefg'[2, 4] #=> ["c", "d", "e", "f"] # これは前にやった例、[2]から4つ
'abcdefg'[2..4] #=> ["c", "d", "e"] # [2]から[4]
'abcdefg'[2...4] #=> ["c", "d"] # [2]から[4]未満(右端の値は含まない)