控制语句

每个编程语言都必须有控制语句,Ruby也不例外。Ruby中的控制语句包含下面几种:

  • 条件选择语句 (if/ case)
  • 循环语句 (while/ for/ until)
  • 迭代语句 (each)

条件选择语句 (if/ case)


x=1
if x > 2
   puts "x is greater than 2"
elsif x <= 2 and x!=0
   puts "x is 1"
else
   puts "I can't guess the number"
end

通过上面例子,基本可以了解if语句的用法了。和其他语言没什么两样。不过在Ruby中,如果你的条件只有一重,可以使用下面的格式,也叫if修饰符:

word = 'world'
puts "hello #{word}" if word
#=> "hello world"

上面的两段代码中,if后面只要跟表示true的表达式,就可以执行if分支,否则就执行其他if分支,比如elsif,或else分支。。

循环语句 (while/ for/ until)

直接看例子吧:

@i = 0;
num = 5;

while @i < num  do
   puts("Inside the loop i = #@i" );
   @i +=1;
end

while循环语句,上面的代码中有一段:

puts("Inside the loop i = #@i" );

这句中的#@i 实际上是#{@i},在变量为非本地变量情况下,Ruby允许你省略{}。


$i = 0;
$num = 5;
begin
   puts("Inside the loop i = #$i" );
   $i +=1;
end while $i < $num

可以使用begin...end while语句,类似于其他语言的do...while。

until语句:

$i = 0;
$num = 5;

until $i > $num  do
   puts("Inside the loop i = #$i" );
   $i +=1;
end

跟while的条件相反才执行。

for语句:

for i in 0..5
   puts "Value of local variable is #{i}"
end

迭代语句 (each)

each是我们最常用的迭代语句,一般都用它来替代循环语句。

[1, 2, 3].each do |i|
   puts i
end

这里涉及到do...end代码块,我们下节会讲到这个概念。