gpt4 book ai didi

ruby 流程控制 方法

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章ruby 流程控制 方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

这章我们将讨论更多的Ruby流程控制. 。

case 。

我们用case语句测试有次序的条件.正如我们所见的,这和C,Java的switch相当接近,但更强大. 。

ruby>i=8 。

ruby>casei 。

|when1,2..5 。

|print"1..5 " 。

|when6..10 。

|print"6..10 " 。

|end 。

6..10 。

nil 。

2..5表示2到5之间的一个范围.下面的表达式测试i是否在范围内

(2..5)===i 。

case内部也是用关系运算符===来同时测试几个条件.为了保持ruby的面对对象性质,===可以合适地理解为出现在when条件里的对 。

象.比如,下面的代码现在第一个when里测试字符串是否相等,并在第二个when里进行正则表达式匹配. 。

ruby>case'abcdef' 。

|when'aaa','bbb' 。

|print"aaaorbbb " 。

|when/def/ 。

|print"includes/def/ " 。

|end 。

includes/def/ 。

nil 。

while 。

虽然你将会在下一章发现并不需要经常将循环体写得很清楚,但Ruby还是提供了一套构建循环的好用的方法. 。

while是重复的if.我们在猜词游戏和正则表达式中使用过它(见前面的章节);这里,当条件(condition)为真的时候,它围绕一个代码域以 。

whilecondition...end的形式循环.但while和if可以很容易就运用于单独语句

ruby>i=0 。

0 。

ruby>print"It'szero. "ifi==0 。

It'szero. 。

nil 。

ruby>print"It'snegative. "ifi<0 。

nil 。

ruby>print"#{i+=1} "whilei<3 。

1 。

2 。

3 。

nil 。

有时候你想要否定一个测试条件.unless是if的否定,until是一个否定的while.在这里我把它们留给你实验. 。

Therearefourwaystointerrupttheprogressofaloopfrominside.First,breakmeans,asinC,toescapefromthe 。

loopentirely.Second,nextskipstothebeginningofthenextiterationoftheloop(correspondingtoC'scontinue). 。

Third,rubyhasredo,whichrestartsthecurrentiteration.ThefollowingisCcodeillustratingthemeaningsofbreak.

next,andredo

有四种从内部中断循环的方法.第一,和C一样break从循环中完全退出.第二,next跳到下一次循环迭代的开始(对应于C的continue).第 。

三,Ruby有redo,它可以重新开始现在的迭代.下面是用C代码对break,next,redo的意义做了演示

while(condition){ 。

label_redo

gotolabel_next;/*ruby's"next"*/ 。

gotolabel_break;/*ruby's"break"*/ 。

gotolabel_redo;/*ruby's"redo"*/ 。

... 。

... 。

label_next

} 。

label_break

... 。

第四种方法是由循环内跳出的方法是returen.return的结果是不仅从循环中跳出,而且会从含循环的方法中跳出.如果有参数,它会返回给方法调用,不然就返回nil. 。

for 。

C程序员现在会想知道怎样做一个"for"循环.Ruby的for比你想象的要有趣一点.下面的loop由集合中的元素控制运行

foreltincollection 。

... 。

end 。

集合可以是一个数集(也是传统意义上的for循环)

ruby>fornumin(4..6) 。

|printnum," " 。

|end 。

4 。

5 。

6 。

4..6 。

也可以是其它的什么类型的集合,比如一个数组

ruby>foreltin[100,-9.6,"pickle"] 。

|print"#{elt} (#{elt.type}) " 。

|end 。

100(Fixnum) 。

-9.6(Float) 。

pickle(String) 。

[100,-9.6,"pickle"] 。

但我们说过头了.for其实是each的另一写法,正巧,这是我们关于迭代器的第一个例子.下面的两种形式是等价的

#Ifyou'reusedtoCorJava,youmightpreferthis. 。

foriincollection 。

... 。

end 。

#ASmalltalkprogrammermightpreferthis. 。

collection.each{|i| 。

... 。

} 。

一旦你熟悉了迭代器,它便会常常代替传统的循环.它们一般更容易处理.因此,让我们接着学习更多关于迭代器的知识. 。

最后此篇关于ruby 流程控制 方法的文章就讲到这里了,如果你想了解更多关于ruby 流程控制 方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com