为了账号安全,请及时绑定邮箱和手机立即绑定

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

/ 猿问

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

临摹微笑 2019-07-05 13:01:43

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

条件运算符如何(? :)用于红宝石?

例如,这是对的吗?

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


查看完整描述

3 回答

?
慕盖茨9453107

这是三元算子,它的工作方式类似于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


查看完整回答
反对 回复 2019-07-05
?
123456qqq
puts true ? "true" : "false"
=> "true"
puts false ? "true" : "false"
=> "false"


查看完整回答
反对 回复 2019-07-05
?
牧羊人nacy

您对再培训局的使用表明您处于Rails中。如果是,那么考虑truncate,一个内置的帮手,为你做这份工作:

<% question = truncate(question, :length=>30) %>


查看完整回答
反对 回复 2019-07-05

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信