Chinaunix首页 | 论坛 | 博客
  • 博客访问: 320994
  • 博文数量: 64
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 1972
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-31 21:53
个人简介

文明之精神,野蛮之体魄。

文章分类
文章存档

2015年(4)

2013年(60)

我的朋友

分类: Python/Ruby

2013-05-09 10:21:58

一、         BEGIN块和END

BEGIN块总是在程序主体前执行,而END块总是在程序主体之后执行。且多个BEGIN块以它们出现的顺序执行,多个END块以它们出现的相反顺序执行。

二、         分支结构

为了让程序具有更严格的语法检查,我们应该总是在if条件后增加then关键字,从而保证源代码有更严格的语法检查。if表达式的返回值取决于条件成立的部分,条件成立的部分的最后一行代码就是该表达式的结果。

1.    if修饰句:使用if修饰句时我们把if表达式放在整个表达式的右边,只有当if后边的条件成立时,才计算左边的表达式,并返回结果。格式如下:表达式 if 表达式。
3.unless
语句:与if语句相反,当条件表达式返回结果为假时,才计算then后面的表达式

2.    case表达式:根据一系列的枚举条件来进行分支结构控制。必须指出的是,当Rubycase后的表达式与when后表达式进行匹配时,使用的是“===”比较符。我们可以在when表达式列表的最后一个表达式前增加(*),一旦该表达式前增加(*),则该表达式被当做数组展开。

三、         循环结构

1.    while表达式:通常而言,while表达式没有返回值,除非使用break中止循环。使用break可以跳出循环,如果使用break跳出循环时紧跟了一个参数,则while循环的返回值为该参数。

2.    while修饰句:把while和对应条件表达式放在整个表达式的右边,只要右边表达式为真,就循环执行左边部分。格式如下:

表达式0 while 表达式1。。。只要表达式1为真,则表达式0就会重复执行。

3.    unitl表达式:只要until关键字后表达式的值为falseRuby将循环执行until条件后的循环体。通常,until循环没有返回值,除非使用break中止循环。

4.    for…in表达式:主要用于迭代数组,Hash对象中的元素。语法如下:

for ele … in 表达式0 do

  表达式

end。。。。。。。。。。。。。。ruby解释器先计算表达式0,得到该表达式的值,然后分别针对表达式值中的每个元素,循环执行for循环体的代码。使用for….in可以一次定义多个循环变量。。。。。。必须指出,使用for。。。in迭代时,每次只能取一个数组元素进行循环。

5.    loop表达式:当使用loop进行循环时,它对指定的代码块执行无限次的循环,除非显示使用break跳出循环。

6.    使用迭代器:Ruby允许我们直接为任意对象定义自己的迭代器。

四、         控制循环结构

1.    使用break结束循环:break只能中止break关键字所在的循环。

2.    使用next结束本次循环:next并未跳出循环,只是中止本次循环。

3.    使用redo重新开始循环:next开始下次循环时,先检查循环条件是否成立,只有当循环条件成立时,才开始下次循环;redo却不再检查循环条件,直接开始下次循环。

4.    使用retry重启迭代器:可以在迭代、块或for…in表达式中使用retry,使用retry的结果是开始全新的迭代,因此,迭代器的参数也被重新初始化。

5.    使用return结束方法。

五、         深入迭代器和块

所谓迭代器就是一个能接收代码块作为参数的方法。Ruby里的块使用{…}do…end抱起来即可。

1.    使用块:当我们定义一个代码块之后,就可以使用一个方法来调用代码块。在方法中调用代码块使用yield关键字,每调用一个yield就可以完成一次对代码块的调用。

      2.实际上迭代器的功能就是一种回调。迭代器方法所属的类只负责遍历需要遍历的元素,而对元素所做的处理则通过回调代码块来实现。Ruby中的容器对象都包含两个简单的迭代器,分别是eachcollect

      3.块和闭包:我们可以把传入的代码块保存起来,而不是立即使用。因此必须给该代码块参数指定一个形参名,给代码块指定形参名时应该在形参名前增加“&”符号。所谓闭包,就是当一个方法返回时,该方法还没有释放资源的栈区。在Ruby里,如果方法返回代码块,而该代码块获得了局部变量的引用,则这些局部变量将在方法返回后仍然可以访问。

阅读(1560) | 评论(0) | 转发(0) |
0

上一篇:Ruby编程基础

下一篇:Ruby面向对象(上)

给主人留下些什么吧!~~