Ruby范圍表示一組具有開(kāi)始和結(jié)束的值。 它們可以使用s..e
和s...e
文字或::new
構(gòu)建。
其中..
的范圍包括起始值和結(jié)束值。而...
的范圍不包含起始值和結(jié)束值。
示例
#!/usr/bin/ruby
# file : range-example.rb
puts (-5..-1).to_a
puts '---------- 1 ------------'
puts (-5...-1).to_a
puts '---------- 2 ------------'
puts ('a'..'e').to_a
puts '---------- 3 ------------'
puts ('a'...'e').to_a
輸出結(jié)果如下 -
F:\worksp\ruby>ruby range-example.rb
-5
-4
-3
-2
-1
---------- 1 ------------
-5
-4
-3
-2
---------- 2 ------------
a
b
c
d
e
---------- 3 ------------
a
b
c
d
F:\worksp\ruby>
Ruby有多種方式來(lái)定義范圍。它們分別如下所示 -
定義范圍的最自然的方式是順序。它們有起點(diǎn)和終點(diǎn)。它們使用..
或...
運(yùn)算符創(chuàng)建。
下面示例中將從0
到5
的采樣范圍。對(duì)此范圍進(jìn)行操作,如下代碼所示:
#!/usr/bin/ruby
# file : range-sequences.rb
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
執(zhí)行上面代碼,得到以下結(jié)果 -
F:\worksp\ruby>ruby range-sequences.rb
true
Minimum value is 0
Maximum value is 5
Rejected values are [5]
In Loop 0
In Loop 1
In Loop 2
In Loop 3
In Loop 4
In Loop 5
F:\worksp\ruby>
范圍也定義為條件表達(dá)式。在個(gè)行集合中定義了不同的條件。 這些條件都包含在開(kāi)始語(yǔ)句和結(jié)束語(yǔ)句中。
示例:
#!/usr/bin/ruby
# file : range-conditions.rb
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
執(zhí)行上面代碼,得到以下結(jié)果 -
F:\worksp\ruby>ruby range-conditions.rb
Rolex
F:\worksp\ruby>
范圍也可以用間隔來(lái)定義。 間隔由===
相等運(yùn)算符表示。
示例:
#!/usr/bin/ruby
# file : range-intervals.rb
if (('a'..'z') === 'v')
puts "v lies in the above range"
end
if (('50'..'90') === 99)
puts "z lies in the above range"
end
執(zhí)行上面代碼,得到以下結(jié)果 -
F:\worksp\ruby>ruby range-intervals.rb
v lies in the above range
F:\worksp\ruby>
Ruby反轉(zhuǎn)(reverse)范圍運(yùn)算符不返回任何值。 如果左側(cè)值大于一個(gè)范圍內(nèi)的右側(cè)值,則不會(huì)有返回值。
示例:
#!/usr/bin/ruby
puts (5..1).to_a
上述示例的輸出中不會(huì)返回任何內(nèi)容。
要打印范圍相反的順序,可以在正常范圍內(nèi)使用reverse
方法,如下所示。
示例:
#!/usr/bin/ruby
# file : range-reverse.rb
puts (1..5).to_a.reverse
puts '----------------------'
puts ('a'...'e').to_a.reverse
執(zhí)行上面代碼,得到以下結(jié)果 -
F:\worksp\ruby>ruby range-reverse.rb
5
4
3
2
1
----------------------
d
c
b
a
F:\worksp\ruby>