国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁(yè) > 編程 > Ruby > 正文

ruby 一些簡(jiǎn)單的例子

2020-10-29 19:47:58
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
現(xiàn)在我們將前面的一些示例程序的代碼坼開(kāi)來(lái)分析一下.

下面的例子出現(xiàn)在簡(jiǎn)單的例子一節(jié).

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


因?yàn)槭堑谝淮谓忉?我們將逐行分析.

def fact(n) 


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

if n == 0 


if 用來(lái)檢查一個(gè)條件.當(dāng)條件吻合時(shí),執(zhí)行下面的代碼;否則執(zhí)行跟在else后的代碼.

1  


當(dāng)條件成立時(shí)if 的值為 1.

else 


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

n * fact(n-1) 


如果條件不滿(mǎn)足, if的值會(huì)是n乘fact(n-1)的結(jié)果.

end 


第一個(gè) end 與 if 語(yǔ)句對(duì)應(yīng).

end 


第二個(gè) end 與 def 語(yǔ)句對(duì)應(yīng).

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


這句用由命令行指定的值來(lái)調(diào)用fact()函數(shù)并打印結(jié)果.

ARGV是一個(gè)包含命令行參數(shù)的數(shù)組.ARGV的成員是字符串,所以我們必須通過(guò)to_i轉(zhuǎn)化其為整數(shù). Ruby并不像Perl那樣自動(dòng)將字符串轉(zhuǎn)化為整數(shù).

Hmmm...如果向程序賦一個(gè)負(fù)值作為參數(shù)會(huì)怎樣?你看到這個(gè)問(wèn)題了嗎?你可以修復(fù)它嗎?

Strings

下面我們來(lái)檢查在字符串這章中出現(xiàn)的猜謎程序.由于這個(gè)要長(zhǎng)一點(diǎn),我們?yōu)槊恳恍写蛏闲袛?shù).

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" 


這個(gè)程序里,我們使用了一個(gè)新的控制結(jié)構(gòu) while.只要某個(gè)指定的條件保持為真,while和它對(duì)應(yīng)的end之間的代碼會(huì)重復(fù)執(zhí)行.

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

在行5我們通過(guò)STDIN.gets方法從標(biāo)準(zhǔn)輸入讀取一行.如果讀行遇到時(shí) EOF (文件結(jié)束), gets會(huì)返回nil.因此,與while相連的代碼會(huì)一直執(zhí)行直到它遇到^D(或DOS下的^Z),表示輸入的結(jié)束.

行6的guess.chop!去掉 guess 的最后一個(gè)字符;那一定是個(gè)換行符.

行15,我們打印出要猜的詞.我們寫(xiě)的代碼是上向 print 語(yǔ)句傳遞三個(gè)參數(shù)(這三個(gè)參數(shù)一個(gè)接一個(gè)地打印),但也可以用一個(gè)參數(shù)等效地打印: 將secret寫(xiě)為 #{secret}以表明將它是一個(gè)要取值的變量,而非一個(gè)要打印的一般文字:

print "the word is #{secret}./n"  


正則表達(dá)式

最后我們來(lái)看看正則表達(dá)式一節(jié)的那個(gè)程序.


01 st = "/033[7m"
02 en = "/033[m"
03
04 while TRUE
05   print "str> "
06   STDOUT.flush
07   str = gets
08   break if not str
09   str.chop!
10   print "pat> "
11   STDOUT.flush
12   re = gets
13   break if not re
14   re.chop!
15   str.gsub! re, "#{st}//&#{en}"
16   print str, "/n"
17 end
18 print "/n" 


在行4,while的條件被硬設(shè)為 true,因此這好像構(gòu)成了一個(gè)無(wú)限循環(huán).但我們?cè)谛?和行13放置了break語(yǔ)句以跳出循環(huán).這兩個(gè)break語(yǔ)句也是 if 修飾辭(if modifier)的一個(gè)例子.一個(gè)"if修飾辭"當(dāng)且僅當(dāng)指明條件滿(mǎn)足時(shí)執(zhí)行它左邊的語(yǔ)句.

再說(shuō)說(shuō) chop! (出現(xiàn)在行9和行14).在Ruby里,我們亦可將"!"和"?"附于某些方法名字后面.驚嘆號(hào)(!,有時(shí)大聲地念作"bang!")暗示某些東西可能具破壞性(destructive),也就是指,某些東西可以改變它所觸及的東西. chop!直接作用于一個(gè)字符串,但不帶!的chop只會(huì)產(chǎn)生一個(gè)拷貝.下面有這一區(qū)別的演示.

ruby> s1 = "forth"
  "forth"
ruby> s1.chop!       # This changes s1.
  "fort"
ruby> s2 = s1.chop   # This puts a changed copy in s2,
  "for"
ruby> s1             # ... without disturbing s1.
  "fort" 



以后你還會(huì)遇見(jiàn)以問(wèn)號(hào)(?,有時(shí)大聲地念做 "huh?")結(jié)束的方法名;這指"斷言"(prediacte)方法,只會(huì)返回true或false.

行15應(yīng)給予注意.首先,注意gsub!也是一個(gè)破壞函數(shù).它通過(guò)替換所有符合 re 模式字符來(lái)修改 str(sub指替換,首字母 g 指全局, 比如,替換所有的匹配而不只是第一個(gè)匹配).到此為止,還好;但我們用什么來(lái)替代文本中的匹配部分呢? 在行1和行2里的 st 和 en 被分別定義為表示反轉(zhuǎn)文本顏色(color-inverted)和恢復(fù)正常文本顏色的ANSI碼. 在行15,它們被#{}括起以確保他們被前面定義的那樣解釋(這樣我們才沒(méi)看見(jiàn)變量名被打印出來(lái)).在這中間是 "http://&".這是個(gè)小把戲.因?yàn)樘鎿Q字符串是由雙引號(hào)引起的,一對(duì)反斜杠會(huì)被解釋為一個(gè)單一的反斜杠;所以 gsub!實(shí)際上得到的是"/&",就一段特殊代碼正好就是表示"任何與模式于第一處匹配的字符".因此新的字符串在被打印出來(lái)的時(shí)候,很像原來(lái)的那個(gè),只不過(guò)匹配的部分以反視(inverse video)的方式高亮度顯示出來(lái).
發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产在线观看18| 精品推荐国产麻豆剧传媒| 精品一二三区视频| 在线天堂中文| 美女网站在线观看| 99热最新网址| 黄污在线观看| 国产网友自拍视频导航网站在线观看| 国产视频xxxx| 自拍亚洲国产| 国产三级在线观看| 92国产在线视频| 免费黄网站在线观看| 亚洲精品一区中文字幕电影| 免费网站看黄yyy222| 国产区成人精品视频| 中文在线观看视频| 国内精品免费一区二区三区| 国产激情视频在线观看| 欧美日韩不卡中文字幕在线| 最近中文字幕mv免费高清视频8| 在线午夜视频| 国产视频97| 国产专区在线播放| baoyu777.永久免费视频| 国产香蕉视频在线观看| 免费日本黄色| 亚洲wwwwww| 国产人成高清视频观看| а√天堂www在线а√天堂视频| www.91在线播放| 九七电影韩国女主播在线观看| 国产精品理人伦一区二区三区| 欧美日韩在线资源| 亚洲精品在线视频免费| 2021av在线| 国产伦精品一区二区三区高清版禁| 在线观看中文字幕一区| 国产深夜福利| 国产日本在线视频| 国产黄a三级三级三级av在线看| 国产蜜臀在线| 精品资源在线看| 国产精品18久久久久久久久久| 88av在线| 国产精品18久久久久网站| 国产一级黄色大片| 国产亚洲精品一区二区在线观看| 开心丁香婷婷深爱五月| 激情综合丁香| 国产嫩草在线视频| 国产鲁鲁视频在线观看免费| 天天操人人干| 国产高潮又爽又无遮挡又免费| 国产爆初菊在线观看免费视频网站 | 国产黄视频网站| 久久精品视频免费看| 欧美精品se| 国产一卡2卡3卡免费网站| 中文字幕日本三级| 2019中文字幕视频| 欧美成人亚洲高清在线观看| 成年女人在线视频| 午夜在线小视频| 国产高清在线观看| 天天噜天天色| 国产视频二区| 免费在线看v| 国产成人久久精品77777| 亚洲欧美综合乱码精品成人网| 国产在线激情视频| 国产欧美在线观看视频| 亚洲国产aⅴ精品| 国产精品臀控福利在线观看| 精品麻豆视频| 国产永久av在线| av日韩国产| 国产精品18久久久久久久久久| 青草视频在线播放| 中文字幕av高清在线观看| 丁香视频免费观看| 青青久在线视频免费观看| 国产成在线观看免费视频| 毛片网站在线观看| 在线视频三级| 国产xxxxx| 91超碰在线免费| 亚洲妇熟xxxx妇色黄| 国产叼嘿网站免费观看不用充会员| www在线视频观看| 精精国产xxxx视频在线| 午夜伦全在线观看| 九色视频网站| 青草在线视频在线观看| 亚洲国产精品区| 亚洲国产成人综合| 亚洲欧美日韩一区成人| 香蕉视频在线观看网站| av文字幕在线观看| 伊人影院在线视频| 亚洲综合在线免费| 91在线网址| 在线免费看av| 夜夜操天天干| 日韩亚洲一区中文字幕| gogo在线观看| 欧美日韩在线精品成人综合网| www.操.com| 免费看ww视频网站入口| www.99av| 午夜视频在线| 在线免费国产| 日本不卡视频一区二区| 成年午夜在线| 国产不卡在线| xxxx视频在线| 黄色av网站在线| 国产精品人人| www.三级.com| 国产视频资源| 伊人影院在线观看| 国产尤物视频| 中文av字幕| 激情六月婷婷| av福利在线播放| 国产在线一区二区视频| 国产成人午夜精品| 好男人免费精品视频| 精品欧美色视频网站在线观看| 亚洲国产成人综合| 午夜国产视频| 亚洲欧美日韩综合精品网| 交换国产精品视频一区| 99热免费在线| 国产美女一区视频| 亚洲字幕成人中文在线观看| 中文字幕视频免费在线观看| av小说在线| 国产精品剧情一区二区三区 | 国产黄色大片在线观看| 永久免费在线观看| 国产性一级片| 麻豆网站在线免费观看| 99爱视频在线观看| 尤物免费看在线视频| 日本国产在线| 精品剧情v国产在线观看| 最新超碰在线| 二人午夜免费观看在线视频| 亚洲视频在线观看不卡| 国产成人亚洲综合小说区| 五月婷婷视频在线观看| 狠狠狠狠狠狠操| 国产在线拍揄自揄拍视频| 美女网站在线观看| 麻豆网站在线| 国产在线三区| 成人日韩欧美| 国产精品亚洲第五区在线| www.夜夜操| 在线一区二区三区精品| 在线免费观看黄色片| 亚洲视频在线网| av中文网站| 日本h片在线观看| 久久综合精品视频| 久草视频国产| 国产一区久久精品| 国产经典三级在线| 91精品国产高久久久久久五月天| 精品国产高清自在线一区二区三区| 国产精品人人爱一区二区白浆| 国产精品视频一区二区久久 | 丁香婷婷在线观看| 国产毛片在线看| 国产三级在线观看| 在线免费国产| 国产麻豆精品高清在线播放| 国产精品久久久久久久久鸭| 在线播放av网站| 国产麻豆高清视频在线第一页| 国产精品人人爱一区二区白浆| 91国内精品在线视频| 青青草在线播放| 中文字幕在线第一页| 国产大学生粉嫩无套流白浆| 亚洲第一成年免费网站| 国产乱在线观看视频| 国产精品蜜臀| 任你操视频在线观看| 国产系列在线观看| 麻豆福利在线观看| 99在线视频观看| 最近中文字幕在线中文视频 | 中文av资源在线| 欧美性猛交p30| 91在线网站| 国产一区二区影视| 亚洲精品国自产拍在线观看| 国产精品亚洲色图|