如果 elsif 别的并且结束

Ruby 为分支逻辑提供了预期的 ifelse 表达式,由 end 关键字终止:

# Simulate flipping a coin
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}"