Ruby如果,如果是,否则,结束

示例

Ruby提供分支逻辑的期望表达式if和else表达式,以end关键字终止:

# 模拟掷硬币
result = [:heads, :tails].sample

if result == :heads
  puts 'The coin-toss came up "heads"'
else
  puts 'The coin-toss came up "tails"'
end

在Ruby中,if语句是计算结果为值的表达式,并且可以将结果分配给变量:

status = if age < 18
           :minor
         else
           :adult
         end

Ruby还提供了C风格的三元运算符(有关详细信息,请参见此处),可以表示为:

some_statement ? if_true : if_false

这意味着上面使用if-else的示例也可以写成

status = age < 18 ? :minor : :adult

此外,Ruby提供了elsif关键字,该关键字接受一个表达式以启用其他分支逻辑:

label = if shirt_size == :s
          'small'
        elsif shirt_size == :m
          'medium'
        elsif shirt_size == :l
          'large'
        else
          'unknown size'
        end

如果if/elsif链中的所有条件都不为真,并且没有else子句,则表达式的值为nil。这在字符串内插中很有用,因为nil.to_s它是空字符串:

"user#{'s' if @users.size != 1}"