我的Ruby学习历程之初识循环结构

来源:互联网 发布:php头部编码 编辑:程序博客网 时间:2024/05/22 13:14
在学习Java循环语句的时候,刚开始对数组操作的时候,总是数组越界,以及其他的一些空指针问题。在Ruby中我不会再担心越界的问题了,哈哈。Java中的foreach使用时我就已经感觉很容易了,而Ruby中有更容易的方法。其实循环的方式多了,刚开始容易搞乱,不过我觉的一步一个脚印,慢慢来,一定可以吸收的

                                                         循环的多种方式(语句or方法)



我觉的面对这么多的循环方式,进行一下如此的分类更有助于记忆。
方法类型的循环,是通过对象调用的,前边接触过each这个方法,当时是对数组以及杂凑进行迭代使用的,而它确实就是这样来进行使用的;与之同类型的方法还有times,它是被 想要执行的次数 执行的,即 次数.times ;loop方法我觉得好比是个while(true)循环,无限循环,可以通过break配合其他条件判断跳出循环,我觉得它不太像是个方法,更像是个语句。
语句类型的循环,for、while、until都需要条件的支持,如果满足条件就一直执行,所以从这里来看loop也不符合他们的共同点。
大多情况使用循环语句就可以解决问题了,循环方法在一些场景下如果运用的话或许会更简单一些。
下面依次展示一些这几种方式的使用方式,以及明确在使用的使用要注意的一些点。

1、times
想要重复执行的次数 . times do
    想要重复执行的动作
end
其实无论在何处,do~end都可以和{ ~ }相互转化吧,不过眼睛看起来使用do~end更加明确清晰一些,这也算是自己认识到的新方式,所以应该注意
次数一旦设定之后,就不会改变,如果不跳出的话,就会执行指定的次数;
也可以在do的后边跟一个 | i |,这个 i 里保存了循环次数的信息,不过是从 0 开始的,你一定对这种方式特别熟悉,因为很多其他的方式也可以这么使用,比如each方法;
这里这个 i 如果表示循环第几次的话,对于程序的可读性来说并没有什么好处,所以一般尽量不要使用,因为有更好的方式等着你。

2、for
A、首先,for语句可以用来替代times的一种形式如下
for 变量  in 开始的数值 . . . 结束的数值  do
        想要重复执行的动作
end
这里的do可以省略,不过为了不出岔子,就按照不可以省略写就好。
这里需要注意的是,开始和结束是 左闭右开,特别需要注意!

B、一般的for语句的使用
使用的方式如下:
for 变量  in  对象  do
       想要重复的动作
end
是不是和上边的不一样了啊,其实意思是一样的,上边的三个点 . . . 其实是一种建立范围对象的特殊记号,也就是说上边的是这个的特殊情况。
这里的对象也不是什么对象都可以的,比如数组、杂凑都是可以的,所以我觉得这个for和Java的foreach真的很相似。

3、while
使用的方式如下:
while  条件  do
       想要重复的操作
end
其实这里的while循环,跟Java中的while循环意思是一模一样的,只要条件成立就会一直执行操作,知道条件不成立或者内部控制跳出为止。

4、until
从小学英语就学到until是   直到...时候   的意思;所以这个意思在这里其实就差不多明白了。好比if和unless(如果不)对立一样,until和while又是一组对立。哈哈,为什么明明用一种方式明明就可以实现要求的功能了,为什么还要设计一个对立的方式呢?可能这种反的方式在特定的情况下会特别方便,但是我觉得像我这里思维不是特别灵敏的,以后就通过正向的方式来写程序吧,毕竟对我来说反着写容易出错。
until  条件  do
      想要重复的操作
end
while是当条件成立的时候执行操作,所以until就是当条件不成立的时候执行操作。一般情况下while加!运算符解决问题就足够了。

5、each
对象 . each do |变量|
       想要重复执行的操作
end
有没有发现跟for真的很相似啊,哈哈,有点混乱了。实际上,Ruby内部处理上将each方法视为基本的循环方式,for则是使用each去实现的特殊语法。所以看来each更牛一些呀,不过到底该如何选择呢?文章最后我们整理总结一下。

6、loop
loop方法没有任何条件限制,只是不断的进行循环操作。
如果使用时有必要,可以配合跳出循环的操作一起使用。

总结:
跟Java中一样,所有的循环,如果只考虑功能的话,仅仅使用while循环就足够了;但是程序不仅仅只是实现功能,代码容易让人看懂也很重要,所有其他的循环也是很有必要的。
                                                       循环使用的各种方式及用途

语法糖衣指的是用更简单的语法形式实现原来复杂形式的功能。
如果次数确定的话,使用times最方便了;其他的情况使用while和each几乎都可以解决了,所以掌握这三种方式是最基本的要求了。不过仅仅凭借循环结构很多问题是无法解决的,还需要搭配循环控制的一些关键字,控制循环的走向,这样才能真真正正的解决问题。