国产探花免费观看_亚洲丰满少妇自慰呻吟_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),表示輸入的結束.
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东乡县| 陵川县| 化州市| 永和县| 宜城市| 江安县| 石楼县| 焦作市| 偃师市| 民丰县| 镇雄县| 嘉祥县| 沽源县| 六安市| 勐海县| 连南| 金华市| 射洪县| 平江县| 广丰县| 城口县| 宣恩县| 武宁县| 利辛县| 台湾省| 蕲春县| 托克逊县| 醴陵市| 堆龙德庆县| 西充县| 海丰县| 汝城县| 桂平市| 大埔县| 南陵县| 临城县| 乐昌市| 浦县| 名山县| 安顺市| 安国市|