📅  最后修改于: 2021-01-08 13:14:26             🧑  作者: Mango
Ruby范围代表一组带有开头和结尾的值。可以使用s..e和s … e字面量或:: new构造它们。
其中包含..的范围从头到尾都包括在内。其中包含…的范围专门运行最终值。
puts (-5..-1).to_a
puts (-5...-1).to_a
puts ('a'..'e').to_a
puts ('a'...'e').to_a
输出:
Ruby有多种定义范围的方法。
定义范围的最自然方法是按顺序进行。它们有一个起点和一个终点。它们是使用..或…运算符创建的。
我们采用的采样范围是0到5。在此范围内执行以下操作。
例:
#!/usr/bin/ruby
range = 0..5
puts range.include?(3)
ans = range.min
puts "Minimum value is #{ans}"
ans = range.max
puts "Maximum value is #{ans}"
ans = range.reject {|i| i < 5 }
puts "Rejected values are #{ans}"
range.each do |digit|
puts "In Loop #{digit}"
end
输出:
范围也定义为条件表达式。在一组行中定义了不同的条件。这些条件包含在start语句和end语句中。
例:
#!/usr/bin/ruby
budget = 50000
watch = case budget
when 100..1000 then "Local"
when 1000..10000 then "Titan"
when 5000..30000 then "Fossil"
when 30000..100000 then "Rolex"
else "No stock"
end
puts watch
输出:
范围也可以根据间隔来定义。间隔由===大小写相等运算符。
例:
#!/usr/bin/ruby
if (('a'..'z') === 'v')
puts "v lies in the above range"
end
if (('50'..'90') === 99)
puts "z lies in the above range"
end
输出:
Ruby反向范围运算符不返回任何值。如果左侧值大于某个范围内的右侧值,则不会返回任何值。
例:
#!/usr/bin/ruby
puts (5..1).to_a
上例的输出将不返回任何内容。
要print反向订单,可以在正常范围内使用反向方法,如下所示。
例:
#!/usr/bin/ruby
puts (1..5).to_a.reverse
输出: