第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

Ruby 的范圍

Ruby 的范圍(Ranges)允許以范圍的形式表示數(shù)據(jù)(換句話說,數(shù)據(jù)集具有開始和結(jié)束值以及介于兩者之間的值的邏輯順序)。范圍內(nèi)的值可以是數(shù)字,字符,字符串或?qū)ο?。在本章中,我們將研究Ruby 支持的三種范圍,即序列,條件和間隔。

1. 范圍作為序列

Ruby 中的序列范圍用于創(chuàng)建一系列連續(xù)值-由開始值,結(jié)束值和介于兩者之間的值范圍組成。

實(shí)例:

1..10    # 1 ~ 10 的序列
1...10   # 1 - 9 的序列

解釋:有兩個運(yùn)算符可用于創(chuàng)建此類范圍,包括兩個點(diǎn)(..)的運(yùn)算符和三個點(diǎn)(...)的運(yùn)算符,他們的區(qū)別是兩個點(diǎn)的運(yùn)算符包括范圍的第一個值和最后一個值,三個點(diǎn)的運(yùn)算符不包括最后一個值

實(shí)例:

# 我們可以通過to_a方法將序列轉(zhuǎn)換成數(shù)組

> (1..10).to_a
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

> (1...10).to_a
=> [1, 2, 3, 4, 5, 6, 7, 8, 9]

我們還可以創(chuàng)建一個基于字符的序列:

> ('a'..'l').to_a
=> ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l"]

2. 范圍的實(shí)例方法

鑒于 Ruby 的面向?qū)ο筇匦?,范圍?shí)際上也是一個對象。這樣,在使用范圍對象時,可以訪問 Range類的許多方法:

實(shí)例:

words = 'a'..'l'
a.class 
=> Range

2.1 獲取范圍最小值

使用 min 方法:

words.min        
=> "a"

2.2 獲取范圍最大值

使用 max 方法:

words.max       
=> "l"

2.3 查看是否在范圍內(nèi)

使用 include? 方法:

words.include?('b') 
=> true

2.4 過濾不符合范圍的值

使用 reject 并在 block 中傳遞條件:

words.reject {|subrange| subrange < 'f'}
=> ["f", "g", "h", "i", "j", "k", "l"]

2.5 遍歷范圍

使用 each 迭代器:

words.each {|word| puts "Hello " + word}
Hello a
Hello b
Hello c
Hello d
Hello e
Hello f
Hello g
Hello h
Hello i
Hello j
Hello k
Hello l
=> "a".."l"

3. 范圍作為條件

范圍也可以用作條件表達(dá)式,一般和 case 一起使用。

實(shí)例:

score = 70

result = case score
   when 0..40 then "Fail"
   when 41..60 then "Pass"
   when 61..70 then "Pass with Merit"
   when 71..100 then "Pass with Distinction"
   else "Invalid Score"
end
     
puts result

# ---- 輸出結(jié)果 ----
Pass with Merit

4. 范圍作為間隔

范圍是識別值是否落在特定范圍內(nèi)的理想選擇。例如,我們可能想知道數(shù)字是在一定范圍內(nèi),還是某個字母組中的字母(按字母順序排列)。這是通過 === 等于運(yùn)算符實(shí)現(xiàn)的。

實(shí)例:

# 判斷15是否在1~20之間
(1..20) === 15       
=> true

# 判斷m是否在k~z字母之間
('k'..'z') === 'm'  
=> true

5. 小結(jié)

本章節(jié)中,我們學(xué)習(xí)了范圍的概念、如何創(chuàng)建一個范圍,范圍的三種使用方法分別是序列、條件與間隔。并且了解了范圍的實(shí)例方法。