我知道我可以不用它生活,但这个问题一直困扰着我。
是否有与Groovy的Elvis operator (?:
)等效的Ruby习语?
本质上,我想能够缩短这个:
PARAM = ARGV[0] ? ARGV[0] : 'default'
或者等价地
PARAM = 'default' unless PARAM = ARGV[0]
变成这样
PARAM = ARGV[0] ?: 'default'
我知道我可以不用它生活,但这个问题一直困扰着我。
是否有与Groovy的Elvis operator (?:
)等效的Ruby习语?
本质上,我想能够缩短这个:
PARAM = ARGV[0] ? ARGV[0] : 'default'
或者等价地
PARAM = 'default' unless PARAM = ARGV[0]
变成这样
PARAM = ARGV[0] ?: 'default'
@params = @params || 5
,你可以简化为 @params ||= 5
。 - Ryan Bigg@params || @params = 5
。 - Andrew Grimm?:
和C#的??
检查NULL值。Ruby的||
检查真实性。如果你正在使用布尔值,比如 foo = bar || true
并且你期望只有当bar
为nil
时才将true
作为默认值,那么它是行不通的。如果bar
不是nil
但为false
,它仍将默认为true
。 - Adeynackdog&.owner&.phone
null
与true
之间的困境:nil.class # => NilClass
,nil&.class # => nil(不是NilClass!)
,false.class #=> FalseClass
,false&.class #=> FalseClass
。 - Alistair A. IsraelARGV[0]
的真实性进行分支。如果我错了,你能解释一下哪个不会以及为什么吗? - JakeRobb