ルビー学習ノート(12)範囲Range


範囲(Range)は、aからz、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     
    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’)