📜  Ruby Ranges

📅  最后修改于: 2021-01-08 13:14:26             🧑  作者: Mango

红宝石山脉

Ruby范围代表一组带有开头和结尾的值。可以使用s..es … 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 

输出: