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

首頁 > 學院 > 開發設計 > 正文

ruby 一些簡單的例子

2019-10-26 19:18:48
字體:
來源:轉載
供稿:網友
現在我們將前面的一些示例程序的代碼坼開來分析一下.

下面的例子出現在簡單的例子一節.

def fact(n)  
    if n == 0    
       1  
    else    
       n * fact(n-1)  
    end
end
print fact(ARGV[0].to_i), "/n"  


因為是第一次解釋,我們將逐行分析.

def fact(n) 


第一行,def 用于定義一個函數(或者,更準確地說,一個方法(method);我們會在稍后的一節中詳細討論什么是一個方法).這里,它指明 fact 函數帶一個參數,也就是 n.

if n == 0 


if 用來檢查一個條件.當條件吻合時,執行下面的代碼;否則執行跟在else后的代碼.

1  


當條件成立時if 的值為 1.

else 


如果條件不成立,執行從這里到end的代碼.

n * fact(n-1) 


如果條件不滿足, if的值會是n乘fact(n-1)的結果.

end 


第一個 end 與 if 語句對應.

end 


第二個 end 與 def 語句對應.

print fact(ARGV[0].to_i), "/n" 


這句用由命令行指定的值來調用fact()函數并打印結果.

ARGV是一個包含命令行參數的數組.ARGV的成員是字符串,所以我們必須通過to_i轉化其為整數. Ruby并不像Perl那樣自動將字符串轉化為整數.

Hmmm...如果向程序賦一個負值作為參數會怎樣?你看到這個問題了嗎?你可以修復它嗎?

Strings

下面我們來檢查在字符串這章中出現的猜謎程序.由于這個要長一點,我們為每一行打上行數.

01 words = ['foobar', 'baz', 'quux']
02 secret = words[rand(3)]
03
04 print "guess? "
05 while guess = STDIN.gets
06   guess.chop!
07   if guess == secret
08     print "you win/n"
09     break
10   else
11     print "you lose./n"
12   end
13   print "guess? "
14 end
15 print "the word is ", secret, "./n" 


這個程序里,我們使用了一個新的控制結構 while.只要某個指定的條件保持為真,while和它對應的end之間的代碼會重復執行.

行2的rand(3)返回一個介于0-2之間的隨機數.這個隨機數用于提取數組 words 中的一個成員.

在行5我們通過STDIN.gets方法從標準輸入讀取一行.如果讀行遇到時 EOF (文件結束), gets會返回nil.因此,與while相連的代碼會一直執行直到它遇到^D(或DOS下的^Z),表示輸入的結束.
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 邵武市| 定兴县| 北宁市| 休宁县| 同江市| 南康市| 富裕县| 海口市| 维西| 高碑店市| 上犹县| 涞源县| 乃东县| 西吉县| 西林县| 固始县| 海盐县| 祥云县| 枣强县| 林州市| 乐东| 满洲里市| 那坡县| 汝城县| 三台县| 忻城县| 丰原市| 郸城县| 祁阳县| 新竹县| 龙口市| 大洼县| 四会市| 建德市| 峨山| 疏附县| 赣榆县| 凭祥市| 北海市| 曲靖市| 西乌珠穆沁旗|