Ruby提供了现代语言很常见的条件结构。在这里,我们将解释Ruby中可用的所有条件语句和修饰符。
if conditional [then] code... [elsif conditional [then] code...]... [else code...] end
如果表达式用于条件执行。值false和nil是false,其他的都是true。注意Ruby使用elsif,而不是if elifif。
如果条件为真,则执行代码。如果条件不为真,则执行else子句中指定的代码。
如果一个表达式的条件从由代码保留字分离然后,换行,或分号。
#!/usr/bin/ruby 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
x is 1
code if condition
如果条件为真,则执行代码。
#!/usr/bin/ruby $debug = 1 print "debug " if $debug
输出结果如下 -
debug
unless conditional [then] code [else code ] end
如果条件为false,则执行代码。如果条件为true,则执行else子句中指定的代码。
#!/usr/bin/ruby x = 1 unless x>2 puts "x is less than 2" else puts "x is greater than 2" end
输出结果如下 -
x is less than 2
code unless conditional
如果条件为false,则执行代码。
#!/usr/bin/ruby $var = 1 print "1 -- Value is set " if $var print "2 -- Value is set " unless $var $var = false print "3 -- Value is set " unless $var
输出结果如下 -
1 -- Value is set 3 -- Value is set
case expression [when expression [, expression ...] [then] code ]... [else code ] end
比较由case指定的表达式和使用===运算符时指定的表达式,并执行与之匹配的when子句的代码。
的表达由当子句指定被评价为左操作数。如果no子句匹配,则case会执行else子句的代码。
阿当语句的表达是从代码由保留字然后,换行,或分号隔开。因此 -
case expr0 when expr1, expr2 stmt1 when expr3, expr4 stmt2 else stmt3 end
基本上类似于以下 -
_tmp = expr0 if expr1 === _tmp || expr2 === _tmp stmt1 elsif expr3 === _tmp || expr4 === _tmp stmt2 else stmt3 end
#!/usr/bin/ruby $age = 5 case $age when 0 .. 2 puts "baby" when 3 .. 6 puts "little child" when 7 .. 12 puts "child" when 13 .. 18 puts "youth" else puts "adult" end
输出结果如下 -
little child