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

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

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

临摹微笑 2019-07-05 13:01:43
如何在Ruby中使用条件运算符(?:)?条件运算符如何(? :)用于红宝石?例如,这是对的吗?<% question = question.size > 20 ? question.question.slice(0, 20)+"..." : question.question %>
查看完整描述

3 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

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

TA贡献1848条经验 获得超2个赞

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


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

TA贡献1862条经验 获得超7个赞

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

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


查看完整回答
反对 回复 2019-07-05
  • 3 回答
  • 0 关注
  • 512 浏览

添加回答

举报

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