如何在 Ruby 中使用条件运算符 (?:)?

2024-03-22

条件运算符 (? :)在 Ruby 中使用?

例如,这是正确的吗?

<% question = question.size > 20 ? question.question.slice(0, 20)+"..." : question.question %>

它是三元运算符 http://en.wikipedia.org/wiki/Ternary_operation,其工作方式与 C 中类似(不需要括号)。这是一个表达式,其工作原理如下:

if_this_is_a_true_value ? then_the_result_is_this : else_it_is_this

然而,在 Ruby 中,if也是一个表达式:if a then b else c end === a ? b : c,优先级问题除外。两者都是表达。

例子:

puts (if 1 then 2 else 3 end) # => 2

puts 1 ? 2 : 3                # => 2

x = if 1 then 2 else 3 end
puts x                        # => 2

请注意,在第一种情况下需要括号(否则 Ruby 会感到困惑,因为它认为它是puts if 1后面有一些额外的垃圾),但在最后一种情况下不需要它们,因为不会出现上述问题。

您可以使用“long-if”形式来提高多行的可读性:

question = if question.size > 20 then
  question.slice(0, 20) + "..."
else 
  question
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Ruby 中使用条件运算符 (?:)? 的相关文章

随机推荐