a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > 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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 色999视频| 免费观看黄色 | 欧美另类一二三四 | 免费看的黄色网 | 日韩在线免费观看网站 | 中文字幕av高清 | 欧美爱爱视频 | 成年人在线视频免费观看 | 欧美一区| 国产亚洲精品久久久久动 | 99精品久久久久久久免费 | 欧美2区| 欧美一区二区在线看 | 日本特黄特色aaa大片免费 | 黑料社区av在线 | 欧美三级不卡 | 欧美一级片在线 | 日韩中文字幕视频在线观看 | 黑人巨大精品欧美一区二区一视频 | 国产精品永久免费 | 99亚洲国产| 一区二区三区免费在线观看 | 美女视频一区二区三区 | 国产精品日韩一区二区 | 欧美日韩不卡合集视频 | 欧美在线www| 日韩 欧美 激情 | 一区二区三区欧美 | av片在线观看网站 | 国产福利电影在线观看 | 亚洲精品不卡 | 免费成人高清在线视频 | 欧美一区二区三区在线看 | 久草免费在线视频 | 国产拍拍拍拍拍拍拍拍拍拍拍拍拍 | 亚洲国产精品久久 | 一区二区三区在线播放 | 免费的一级黄色片 | 日韩精品一区二区三区中文字幕 | 国产精品久久久久久久久免费软件 | av香港经典三级级 在线 |