ルビー学習ノート(12)範囲Range
範囲(Range)は、aからz、0から9など、どこにもありません.Rubyは範囲をサポートし、範囲を異なる方法で使用できます.シーケンスとしての範囲 を条件とする範囲 .を間隔とする範囲 .
シーケンスとしての範囲
範囲の最初の最も一般的な用途は、シーケンスを表現することです.シーケンスには、開始点、終了点、シーケンスに連続値を生成する方法があります.ルビー使用および範囲演算子は、これらのシーケンスを作成します.2点形式指定した最高値を含む範囲を作成し、3点形式で指定した最高値を含まない範囲を作成します.
シーケンス1..100は、2つのFixnumオブジェクトの参照を含むRangeオブジェクトです.必要に応じてto_を使用できます.aメソッドは範囲をリストに変換する.次の例を試します.
結果:[1,2,3,4,5,6,7,8,9,10][「bar」,「bas」,「bat」]
結果:true最小値0最大値9が条件を満たさないのは[5,6,7,8,9]サイクル中0サイクル中1サイクル中2サイクル中3サイクル中4サイクル中5サイクル中6サイクル中7サイクル中8サイクル中9
条件式として
範囲はcase文で使用できます.
結果:合格点
間隔の範囲としての最後の用途は、間隔検出です.指定した値が指定した範囲内であるかどうかを確認します.==等しい演算子を使用して計算を完了する必要があります.
結果:5は(1..10)cで(‘a’.’j’)
シーケンスとしての範囲
範囲の最初の最も一般的な用途は、シーケンスを表現することです.シーケンスには、開始点、終了点、シーケンスに連続値を生成する方法があります.ルビー使用および範囲演算子は、これらのシーケンスを作成します.2点形式指定した最高値を含む範囲を作成し、3点形式で指定した最高値を含まない範囲を作成します.
(1..5) #==> 1, 2, 3, 4, 5
(1...5) #==> 1, 2, 3, 4
('a'..'d') #==> 'a', 'b', 'c', 'd'
シーケンス1..100は、2つのFixnumオブジェクトの参照を含むRangeオブジェクトです.必要に応じてto_を使用できます.aメソッドは範囲をリストに変換する.次の例を試します.
#!/usr/bin/ruby
$, =", " # Array
range1 = (1..10).to_a
range2 = ('bar'..'bat').to_a
puts "#{range1}"
puts "#{range2}
結果:[1,2,3,4,5,6,7,8,9,10][「bar」,「bas」,「bat」]
#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
#
digits = 0..9
puts digits.include?(5)
ret = digits.min
puts " #{ret}"
ret = digits.max
puts " #{ret}"
ret = digits.reject {|i| i < 5 }
puts " #{ret}"
digits.each do |digit|
puts " #{digit}"
end
結果:true最小値0最大値9が条件を満たさないのは[5,6,7,8,9]サイクル中0サイクル中1サイクル中2サイクル中3サイクル中4サイクル中5サイクル中6サイクル中7サイクル中8サイクル中9
条件式として
範囲はcase文で使用できます.
#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
score = 70
result = case score
when 0..40
" "
when 41..60
" "
when 61..70
" "
when 71..100
" "
else
" "
end
puts result
結果:合格点
間隔の範囲としての最後の用途は、間隔検出です.指定した値が指定した範囲内であるかどうかを確認します.==等しい演算子を使用して計算を完了する必要があります.
#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
if ((1..10) === 5)
puts "5 (1..10)"
end
if (('a'..'j') === 'c')
puts "c ('a'..'j')"
end
if (('a'..'j') === 'z')
puts "z ('a'..'j')"
end
結果:5は(1..10)cで(‘a’.’j’)