詳解Ruby中範圍的概念

2022-10-04 22:57:35 字數 2187 閱讀 5463

範圍無處不在:1月至12月,0至9日,50至67行,依此類推。 ruby支援範圍,並允許我們使用多種方式的範圍:

作為序列範圍:

首先,也許是最自然的使用範圍來表達序列。序列有乙個起點,乙個終點和序列中的連續值的方法來生產。

ruby建立'' ..''和'' ...''範圍內運算子使用這些序列。這兩個點的形式建立乙個包容性的範圍,而三個點的形式建立了乙個範圍,不包括指定的高值。

(1..5) #==> 1, 2, 3, 4,xvyvarm 5

(1...5) #==> 1, 2, 3, 4

('a'..'d') #==> 'a', 'b', 'c', 'd'

序列1..10xvyvarm0作為乙個range物件包含兩個fixnum的物件的引用。如果需要,可以將一系列的列表使用to_a方法。試試下面的例子:

#!/usr/bin/ruby

$, =", " # array value separator

range1 = (1..10).to_a

range2 = ('bar'..'bat').to_a

puts "#"

puts "#"

這將產生以下結果:

1, 2, 3, 4, 5, 6, 7, 8, 9, 10

bar, bas, bat

範圍實現方法,可在它們之間迭代並在各種不同的方式測試他們的內容:

#!/usr/bin/rubyxvyvarm

# assume a range

digits = 0..9

puts digits.include?(5)

ret = digits.min

puts "min value is #"

ret = digits.max

puts "max value is #"

ret = digits.reject

puts "rejected values are #"

digits.each do |digit|

puts "in loop #"

end這將產生以下結果:

true

min value is 0

max value is 9

rejected values are 5, 6, 7, 8, 9

in loop 0

in loop 1

in loop 2

in loop 3

in loop 4

in loop 5

in loop 6

in loop 7

in loop 8

in loop 9

作為條件的範圍:

範圍也可以使用作為條件表示式。例如,下面的**片段列印套行從標準輸入,每一組中的第一行包含單詞開始和結束的最後一行字:

while gets

print if /start/../end/

end範圍可以使用 case 語句:

#!/usr/bin/ruby

score = 70

result = case score

when 0..40: "fail"

when 41..60: "pass"

when 61..70: "pass with merit"

when 71..100:www.cppcns.com "pass with distinction"

else "invalid score"

endputs result

這將產生以下結果:

pass with merit

區間範圍:

最後乙個使用的全能型的範圍是為間隔測試:是否有某個值落在該區間的時間間隔內,這是使用 === 情況下相等操作。

#!/usr/bin/ruby

if ((1..10) === 5)

puts "5 lies in (1..10)"

endif (('a'..'j') === 'c')

puts "c lies in ('a'..'j')"

endif (('a'..'j') === 'z')

puts "z lies in ('a'..'j')"

end這將產生以下結果:

5 lies in (1..10)

c lies in ('a'..'j')

本文標題: 詳解ruby中範圍的概念

本文位址:

Ruby中的迭代器詳解

d瓜哥最近想做乙個 另外,老早就有學習一門動態語言的想程式設計客棧法,滿足著兩個條件的程式語言中,ruby python是最合適的兩種語言。現在ruby on rails如日中天,光芒萬丈!所以,就選定了ruby,從零開始學習。前天看了ruby的迭代器,對於我這個只學過j a c c 等的人來說,絕...

完美理解ruby中的yield的概念

大學裡常常發生佔位置的現象 頭天晚上拿一本書放在課座上,表示位置已經被佔了 第二天才來到這個座位上,翻開書正式上課.在這個現象中,書本 充當了 佔位符 的作用。在ruby語言中,yield是佔位符 先在前面的某部分 中用yield把位置佔著,然後才在後面的某個 塊 block 裡真正實現它,從而完成...

C Primer中的陌生概念四 範圍for語句

範圍for語句是c 11 新標準引入的一種更為簡單的for語句,用於遍歷容器或其他序列的所有元素。如下面的例子 vector v for auto r v for語句頭宣告了迴圈控制變數r,並把它和v關聯在一起,我們使用關鍵字auto令編譯器為r指定正確的型別。需要注意的是,上面的語句相當於 for...