如何在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