【问题标题】:What does the lone question mark symbol and lone colon symbol mean in Ruby [duplicate]Ruby中的孤问号符号和孤冒号符号是什么意思[重复]
【发布时间】:2020-04-30 12:32:39
【问题描述】:

在这个先前编写的代码的 sn-p 中,有 ?: 由它们自己使用(单独的符号),而不是附加到单词上。在这种情况下它们是什么意思?

  # Fill application object with applicant info; generic info if not provided.
  availability ? formdata[:availability] = availability : (formdata[:availability] = [0,1,2,3,4,5,6])

【问题讨论】:

  • FWIW 可以在没有三元组的情况下重写该行:formdata[:availability] = availability || [0,1,2,3,4,5,6]

标签: ruby syntax symbols colon


【解决方案1】:

这是ternary operator。它相当于 if/else。您的代码也可以这样编写:

if availability 
  formdata[:availability] = availability 
else
  (formdata[:availability] = [0,1,2,3,4,5,6])
end

我还认为它应该被简化为这样的东西:

formdata[:availability] = availability ? availability : [0,1,2,3,4,5,6]

条件句中的赋值是一种奇怪的写法,并不常见。

您还可以将其进一步简化为:

formdata[:availability] = availability || [0,1,2,3,4,5,6]

how an || (or) assignment operates can be found here的详细信息

【讨论】:

  • 谢谢!我不知道你可以写这样的 if else 语句
  • @AA。许多(大多数?)语言都有三元运算符。
  • @GavinMiller:“许多(大多数?)语言都有三元运算符。” - 我发现它变得越来越不常见了。例如,Go 和 Rust 没有它
  • 为什么人们使用三元运算符而不是 if else 语句或 case 语句?是因为简单还是灵活?我仍在学习编码的新事物,所以请原谅我的问题。乍一看,三元运算符似乎有点难以阅读,因此是我最初的问题。
  • @AA.: 如果使用得当/负责任的话,阅读起来并不难。在您帖子的 sn-p 中,它被滥用了。
猜你喜欢
  • 2012-09-25
  • 1970-01-01
  • 2012-01-26
  • 2012-10-09
  • 2019-09-14
  • 2020-06-29
  • 2015-02-11
  • 2011-10-20
相关资源
最近更新 更多