Ruby相当于Groovy的Elvis(?:)运算符?

Ali*_*ael 32 ruby groovy

我知道我可以没有它,但这个问题一直困扰着我.

是否有一个Ruby语言相当于Groovy的Elvis运算符(?:)?

从本质上讲,我希望能够缩短这一点

PARAM = ARGV[0] ? ARGV[0] : 'default'
Run Code Online (Sandbox Code Playgroud)

或者等价

PARAM = 'default' unless PARAM = ARGV[0]
Run Code Online (Sandbox Code Playgroud)

变成这样的事情

PARAM = ARGV[0] ?: 'default'
Run Code Online (Sandbox Code Playgroud)

Ali*_*ael 51

没关系:-)我在找到运营商的名字后自己找到了答案.

这里:

PARAM = ARGV[0] || 'default'
Run Code Online (Sandbox Code Playgroud)

(必须是'因为我现在正在处理4种语言,所以我忘了我可以做到这一点.)

  • 或者,如果您正在执行类似`@params = @params ||的操作 5`你可以将它缩短为`@params || = 5` (3认同)
  • @RyanBigg:要迂腐,它更像是@params || @params = 5` http://stackoverflow.com/questions/995593/what-does-mean-in-ruby/2505285#2505285 (3认同)
  • 遗憾的是,这并非完全正确。Kotlin的`?:`和C#的????检查是否为NULL。Ruby的`||`检查是否为真。如果您正在使用布尔值,那么可以说`foo = bar || true,并且您期望true才是默认值,除非bar的值为nil,否则它将不起作用。如果“ bar”不是“ nil”,而是“ false”,它仍将默认为“ true”。 (2认同)

Jac*_*cka 5

可能因为 Ruby 2.3

dog&.owner&.phone
Run Code Online (Sandbox Code Playgroud)