Ruby基礎知識之基本流程式控制制_ruby專題

來源:互聯網
上載者:User

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

複製代碼 代碼如下:

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.