这是三元算子,它的工作方式类似于C(不需要括号)。这个表达式的工作原理如下:if_this_is_a_true_value ? then_the_result_is_this : else_it_is_this然而,在红宝石,if也是这样的表达式:if a then b else c end === a ? b : c,除优先权问题外。两者都是表达。例子:puts (if 1 then 2 else 3 end) # => 2puts 1 ? 2 : 3
# => 2x = if 1 then 2 else 3 endputs x
# => 2注意,在第一种情况下,需要使用括号(否则Ruby会感到困惑,因为它认为它是puts if 1但在最后一种情况下,它们是不需要的,因为上面提到的问题并不会出现。您可以在多行上使用“long-if”表单来提高可读性:question = if question.size > 20 then
question.slice(0, 20) + "..."else
questionend