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

Ruby中使用条件运算符( ? : :)的方式如何?

例如,这是正确的吗?

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

它是三元运算符,它和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 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

puts true ? "true" : "false"
=> "true"


puts false ? "true" : "false"
=> "false"

你使用ERB表明你在使用Rails。 如果是这样,那么考虑truncate ,一个内置的帮手,将为你做这项工作:

<% question = truncate(question, :length=>30) %>
链接地址: http://www.djcxy.com/p/73095.html

上一篇: How do I use the conditional operator (? :) in Ruby?

下一篇: Operator overloading in Java