国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Ruby > 正文

Ruby基礎知識之基本流程控制

2020-10-29 19:40:57
字體:
來源:轉載
供稿:網友

(一)條件判斷
條件判斷為基本式:

復制代碼 代碼如下:

if expression
       code
end

表達式如果不是false或nil,則可執行code部分,所以對于else來說,如果為false或nil,則else下的代碼是要執行的。要注意的是表達式與執行代碼之間要有分界符:例如換行或分號或是then關鍵字。
多條件分支情況下,除了可以用else if之外,可以用省略式:elsif
復制代碼 代碼如下:

if expression1
       code1
elsif expression2
       code2
else
       code3
end

如果通過then做為分界符:
if expression then code end,那么可以把if直接做為分界符:code if expression,這時,if稱為表達式修飾符。先寫執行再寫執行條件。要注意的是:如果成為表達式修飾符,則執行代碼與if之間不能帶換行符。雖然這種方式也是一種條件句,但我覺得它更像一種修飾。

對于if判斷來說,它可以返回執行代碼后的值。

與if條件類似,還有unless判斷,它和if相反。

在C#中,多分支語句有個switch case開關,在ruby中,則是case when。case when非常靈活。

(二)循環

循環條件是while do或until do,而位于它們之間的是循環體。
現條件if相似,循環語句也可以用分界符的形式做緊湊循環,這時,省略了換行符和end。

復制代碼 代碼如下:

x=1
puts x,x+=1 while x<10
 
while x<20 do
  puts x
  x+=1
end

 
在C#中有for循環應用非常廣泛,在ruby中,for循環與foreach的作用類似,用于對可枚舉對象進行迭代。
復制代碼 代碼如下:

for var in collection do
       code
end

其中collection是帶有each迭代方法的對象;do關鍵字可選(可以用換行符或分號替代)。
復制代碼 代碼如下:

arr=%w[1 2 3 4 5 6]
for item in arr
  print item<<" "
end
 
hash1={:a=>1,:b=>2,:c=>3}
for key,value in hash1
  print "#{key}=#{value}"<<" "
end

(三)迭代器和枚舉
除了循環控制while、for、until外,有種特殊的方法用于循環,也就是迭代器,它是ruby最重要的特性之一。
(1)數值迭代器
upto:為一個區間內的所有整數調用其關聯的代碼塊。左邊為起始,右邊為結束。
downto:與upto相反。
times:調用關系的代碼一定的次數,且把0到n-1傳遞給代碼。
step:以一定的步長,迭代增加到指定數值。第二個參數為步長。

復制代碼 代碼如下:

1.upto(5){|x|print "#{x} "}
puts
5.downto(1){|x|print "#{x} "}
puts
3.times{|x|print "#{x} "}
puts
3.step(5,0.5){|x|print "#{x} "}
 

(2)枚舉迭代器
each:將迭代元素傳遞給代碼。
collect:為調用它的枚舉的每個元素執行關聯代碼后,組合到一起做為一個數組返回。
select:為調用它的枚舉的每個元素執行關聯代碼后,如果為真,組合到一起做為一個數組返回。
reject:與select相反。它把為false或nil的元素做為一個數據返回。
inject:求累積值迭代。通過兩個參數調用關聯代碼塊,第一個參數是前次調用代碼塊的累積值,第二個參數指調用進行迭代的下一個元素。如果有傳遞參數,則做為第一個參數的初始值,如果沒有,則把第一次進行迭代的元素值做為初始值。
復制代碼 代碼如下:

a1=[1,2,3]
a2=a1.map{|x| x+1}
a3=a2.collect{|x| x+1}
print a2,a3
 
#o偶數
a5=a1.select{|x|x%2==0}
print a5
 
a6=a1.reject{|x|x%2==0}
print a6
puts
a7=a1.inject{|sum,x|x+sum}
puts a7
a8=a1.inject(10){|sum,x|x+sum}
puts a8

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新河县| 潍坊市| 西乡县| 微博| 富阳市| 丹东市| 密山市| 延长县| 鹤山市| 汶上县| 来凤县| 务川| 邵阳县| 桃园市| 安义县| 陇川县| 灵石县| 黑河市| 长沙县| 许昌市| 理塘县| 康马县| 新邵县| 北安市| 乐亭县| 长治市| 高清| 夏河县| 三亚市| 偃师市| 桂林市| 鹤岗市| 康马县| 遂昌县| 依兰县| 兴山县| 衡山县| 宿州市| 淮南市| 天峻县| 天等县|