欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Ruby基礎(chǔ)知識之基本流程控制

 更新時間:2015年04月16日 09:51:23   投稿:junjie  
這篇文章主要介紹了Ruby基礎(chǔ)知識之基本流程控制,本文講解了條件判斷、循環(huán)語句、迭代器和枚舉三部分內(nèi)容,需要的朋友可以參考下

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

復(fù)制代碼 代碼如下:

if expression
       code
end

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

if expression1
       code1
elsif expression2
       code2
else
       code3
end

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

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

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

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

(二)循環(huán)

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

復(fù)制代碼 代碼如下:

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

 
在C#中有for循環(huán)應(yīng)用非常廣泛,在ruby中,for循環(huán)與foreach的作用類似,用于對可枚舉對象進行迭代。
復(fù)制代碼 代碼如下:

for var in collection do
       code
end

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

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

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

復(fù)制代碼 代碼如下:

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:為調(diào)用它的枚舉的每個元素執(zhí)行關(guān)聯(lián)代碼后,組合到一起做為一個數(shù)組返回。
select:為調(diào)用它的枚舉的每個元素執(zhí)行關(guān)聯(lián)代碼后,如果為真,組合到一起做為一個數(shù)組返回。
reject:與select相反。它把為false或nil的元素做為一個數(shù)據(jù)返回。
inject:求累積值迭代。通過兩個參數(shù)調(diào)用關(guān)聯(lián)代碼塊,第一個參數(shù)是前次調(diào)用代碼塊的累積值,第二個參數(shù)指調(diào)用進行迭代的下一個元素。如果有傳遞參數(shù),則做為第一個參數(shù)的初始值,如果沒有,則把第一次進行迭代的元素值做為初始值。
復(fù)制代碼 代碼如下:

a1=[1,2,3]
a2=a1.map{|x| x+1}
a3=a2.collect{|x| x+1}
print a2,a3
 
#o偶數(shù)
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

相關(guān)文章

  • ruby實現(xiàn)github第三方認(rèn)證

    ruby實現(xiàn)github第三方認(rèn)證

    GitHub在用戶認(rèn)證過程中采用了雙匙機制,在雙匙加密機制中,只有合法用戶才擁有私匙,只要GitHub在收到請求時可以證明提交請求的客戶端上擁有該私匙,即可以確認(rèn)該操作是由合法用戶發(fā)起的。我們通過ruby來簡單模擬下吧。
    2015-06-06
  • 在Ruby程序中連接數(shù)據(jù)庫的詳細(xì)教程

    在Ruby程序中連接數(shù)據(jù)庫的詳細(xì)教程

    這篇文章主要介紹了在Ruby程序中連接數(shù)據(jù)庫的詳細(xì)教程,包括介紹數(shù)據(jù)庫支持Ruby的接口等,是學(xué)習(xí)Ruby on Rails的基礎(chǔ),需要的朋友可以參考下
    2015-04-04
  • 在Ruby on Rails上使用Redis Store的方法

    在Ruby on Rails上使用Redis Store的方法

    這篇文章主要介紹了在Ruby on Rails上使用Redis Store的方法,是Ruby程序和Redis數(shù)據(jù)庫結(jié)合的有效途徑,需要的朋友可以參考下
    2015-06-06
  • 在Docker中自動化部署Ruby on Rails的教程

    在Docker中自動化部署Ruby on Rails的教程

    這篇文章主要介紹了在Docker中部署Ruby on Rails的教程,Docker是當(dāng)下最火的虛擬機,而本文所介紹的Ruby on Rails的部署則充分利用了Ruby中的rake這一炫酷的實現(xiàn)自動化的方法,需要的朋友可以參考下
    2015-06-06
  • Ruby中執(zhí)行Linux shell命令的六種方法詳解

    Ruby中執(zhí)行Linux shell命令的六種方法詳解

    這篇文章主要介紹了Ruby中執(zhí)行Linux shell命令的六種方法詳解,這些方法包括exec、system、反引號、IO、Open3、Open4等命令,需要的朋友可以參考下
    2015-01-01
  • Ruby中對一元操作符重載實例

    Ruby中對一元操作符重載實例

    這篇文章主要介紹了Ruby中對一元操作符重載實例,實例說明如何對一元操作符進行重載,需要的朋友可以參考下
    2014-06-06
  • ruby和pig處理流式文件實例

    ruby和pig處理流式文件實例

    這篇文章主要介紹了ruby和pig處理流式文件實例,本文講解pig加載hdfs文件后調(diào)用ruby腳本處理數(shù)據(jù),再返回數(shù)據(jù)流至pig中處理的一個簡單案例,需要的朋友可以參考下
    2015-01-01
  • Ruby包管理器gem常用命令

    Ruby包管理器gem常用命令

    這篇文章主要介紹了Ruby包管理器gem常用命令,本文講解了獲取幫助、查詢可用包、安裝軟件、查詢已安裝軟件、卸載軟件等常用命令,需要的朋友可以參考下
    2015-04-04
  • rudy 方法 分析

    rudy 方法 分析

    rudy 方法 分析...
    2007-11-11
  • Ruby使用C++擴展實例(含C++擴展代碼示例)

    Ruby使用C++擴展實例(含C++擴展代碼示例)

    這篇文章主要介紹了Ruby使用C++擴展實例,含C++擴展實現(xiàn)代碼,本文可作為Ruby中使用C++擴展的入門教程,需要的朋友可以參考下
    2014-09-09

最新評論