> Ruby – Ranges~RUBY入門〜RUBYTUTORIAL〜 – ネットワークエンジニアチュートリアル

Ruby – Ranges~RUBY入門〜RUBYTUTORIAL〜

スポンサーリンク

無料でプログラマへ!30歳までなら無料でプログラミング学校に通うことが出来ます。下の画像をクリックして無料相談会でGO!

Ruby – Ranges


範囲は1月から12月、0から9、など決められた範囲を表します。

  • シーケンスとしての範囲
  • 条件としての範囲
  • インターバルとしての範囲

シーケンスとしての範囲


範囲の最初の、おそらく最も自然な使用は、シーケンスを表現することです。シーケンスには開始点、終了点、およびシーケンス内の連続する値を生成する方法があります。

Rubyは、‘..’ ‘‘ ‘…’ ‘の範囲演算子を使ってこれらのシーケンスを作成します。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 value separator
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

# Assume a range
digits = 0..9

puts digits.include?(5)
ret = digits.min
puts "Min value is #{ret}"

ret = digits.max
puts "Max value is #{ret}"

ret = digits.reject {|i| i < 5 }
puts "Rejected values are #{ret}"

digits.each do |digit|
   puts "In Loop #{digit}"
end

これにより、次の結果が生成されます。

true
Min value is 0
Max value is 9
Rejected values are 5, 6, 7, 8, 9
In Loop 0
In Loop 1
In Loop 2
In Loop 3
In Loop 4
In Loop 5
In Loop 6
In Loop 7
In Loop 8
In Loop 9

条件としての範囲


範囲は条件式としても使用できます。例えば、各セットの最初の行は、ワード含む標準入力からの行の次のコード断片プリントセット開始およびワードが最後の行終了を –

while gets
   print if /start/../end/
end

ケースステートメントで範囲を使用できます –

#!/usr/bin/ruby

score = 70

result = case score
   when 0..40 then "Fail"
   when 41..60 then "Pass"
   when 61..70 then "Pass with Merit"
   when 71..100 then "Pass with Distinction"
   else "Invalid Score"
end

puts result

これにより、次の結果が生成されます。

Pass with Merit

インターバルとしての範囲


汎用的な範囲の最終的な使用は、間隔テストとしてです:がある値が範囲によって表される間隔内にあるかどうかを確認してください。これは、ケース等価演算子===を使用して行われます。

#!/usr/bin/ruby

if ((1..10) === 5)
   puts "5 lies in (1..10)"
end

if (('a'..'j') === 'c')
   puts "c lies in ('a'..'j')"
end

if (('a'..'j') === 'z')
   puts "z lies in ('a'..'j')"
end

これにより、次の結果が生成されます。

5 lies in (1..10)
c lies in ('a'..'j')

前のページ

次のページ

スポンサーリンク

ネットワークエンジニアになりたければ下記から無料相談会に参加!
なんと無料で授業を受けれてエンジニアになれます

投稿日:

執筆者: