1. if
1.1 格式:
if conditional [then]
code...
[elsif conditional [then]
code...]...
[else
code...]
end
if 表达式用于条件执行。值 false 和 nil 为假,其他值都为真。请注意,Ruby 使用 elsif,不是使用 else if 和 elif。
如果 conditional 为真,则执行 code。如果 conditional 不为真,则执行 else 子句中指定的 code。
通常我们省略保留字 then 。若想在一行内写出完整的 if 式,则必须以 then 隔开条件式和程式区块。
1.2 if修饰符
格式
code if condition
if修饰词组表示当 if 右边之条件成立时才执行 if 左边的式子。即如果 conditional 为真,则执行 code。
1.3 unless语句
格式:
unless conditional [then]
code
else
code
end
unless式和 if式作用相反,即如果 conditional 为假,则执行 code。如果 conditional 为真,则执行 else 子句中指定的 code。
1.4 unless修饰符
code unless conditional
如果 conditional 为假,则执行 code。
1.5 case语句
case expression
[when expression [, expression ...] [then]
code ]...
[else
code ]
end
case先对一个 expression 进行匹配判断,然后根据匹配结果进行分支选择。
它使用 ===运算符比较 when 指定的 expression,若一致的话就执行 when 部分的内容。
通常我们省略保留字 then 。若想在一行内写出完整的 when 式,则必须以 then 隔开条件式和程式区块。
2.循环
2.1 while do
while conditional [do] #或者[:]
code
end
当 conditional 为真时,执行 code。
语法中 do 或 : 可以省略不写。但若要在一行内写出 while 式,则必须以 do 或 : 隔开条件式或程式区块。
2.2 while修饰符 相当于 do while
code while condition
或者
begin
code
end while conditional
当 conditional 为真时,执行 code。
如果 while 修饰符跟在一个没有 rescue 或 ensure 子句的 begin 语句后面,code 会在 conditional 判断之前执行一次。
2.3 until 语句
until conditional [do]
code
end
当 conditional 为假时,执行 code。
语法中 do 可以省略不写。但若要在一行内写出 until 式,则必须以 do 隔开条件式或程式区块。
2.4 until修饰循环
code until conditional
或者
begin
code
end until conditional
当 conditional 为 false 时,执行 code。
如果 until 修饰符跟在一个没有 rescue 或 ensure 子句的 begin 语句后面,code 会在 conditional 判断之前执行一次。
3. for 语句
for variable [, variable ...] in expression [do]
code
end
for...in 循环几乎是完全等价于:
(expression).each do |variable[, variable...]| code end
4.break 终止最内部的循环。如果在块内调用,则终止相关块的方法(方法返回 nil)。
5. next 类似于c的continue
6.redo 重新开始最内部循环的该次迭代,不检查循环条件。如果在块内调用,则重新开始 yield 或 call。
7. retry(1.9之后不支持)
如果 retry 出现在 begin 表达式的 rescue 子句中,则从 begin 主体的开头重新开始。
如果 retry 出现在迭代内、块内或者 for 表达式的主体内,则重新开始迭代调用。迭代的参数会重新评估。