鍍金池/ 教程/ Ruby/ Ruby范圍
Ruby for循環(huán)
Ruby教程
Ruby文件I/O
Ruby迭代器
Ruby哈希
Ruby日期時(shí)間
Ruby類(lèi)和對(duì)象
Ruby快速入門(mén)(30分鐘)
Ruby redo/retry語(yǔ)句
Ruby模塊
Ruby解析XML(REXML)
Ruby if-else語(yǔ)句
Ruby的功能特點(diǎn)
Ruby break/next語(yǔ)句
Ruby方法
Ruby是什么?
Ruby與Python比較
Ruby Case語(yǔ)句
Ruby目錄
Ruby范圍
Ruby異常
Ruby套接字編程(Socket)
Ruby字符串
Ruby安裝配置
Ruby運(yùn)算符
Ruby while/do...while循環(huán)語(yǔ)句
Ruby第一個(gè)HelloWorld程序
Ruby until循環(huán)語(yǔ)句
Ruby注釋
Ruby塊
Ruby數(shù)據(jù)類(lèi)型
Ruby面向?qū)ο?/span>
Ruby正則表達(dá)式
Ruby數(shù)組
Ruby變量
Ruby多線程編程

Ruby范圍

Ruby范圍表示一組具有開(kāi)始和結(jié)束的值。 它們可以使用s..es...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)建。
下面示例中將從05的采樣范圍。對(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)范圍

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>