ruby 数据类型Range

范围(Range)无处不在:a 到 z、 0 到 9、等等。Ruby 支持范围,并允许我们以不同的方式使用范围:

  • 作为序列的范围
  • 作为条件的范围
  • 作为间隔的范围

  1. 作为序列的范围
    (1..5)        #==> 1, 2, 3, 4, 5
    (1...5)       #==> 1, 2, 3, 4
    ('a'..'d')    #==> 'a', 'b', 'c', 'd'

    Range 转化为 Array

    range1 = (1..10).to_a  #=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    range2 = ('bar'..'bat').to_a  #=> ["bar", "bas", "bat"]

    Range的迭代

    # 指定范围
    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
  2. 作为条件的范围
    score = 70
     
    result = case score
    when 0..40
        "糟糕的分数"
    when 41..60
        "快要及格"
    when 61..70
        "及格分数"
    when 71..100
           "良好分数"
    else
        "错误的分数"
    end
     
    puts result #=> 及格分数
  3. 作为间隔的范围
    范围的最后一个用途是间隔检测:检查指定值是否在指定的范围内。需要使用 === 相等运算符来完成计算
    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')
原文地址:https://www.cnblogs.com/wf0117/p/8871425.html