以下代码在Ruby中是什么意思
||=
它对语法有什么意义或原因吗
a | |=b是一个条件赋值运算符。这意味着:
- 如果
a未定义或错误,则计算b并将a设置为结果 - 否则(如果定义了
a并计算为truthy),则不计算b,并且不进行赋值
例如:
a | |=nil#=>;无
a | |=0#=>;0
a | |=2#=>;0
foo=false#=>;错误的
foo | |=真#=>;符合事实的
foo | |=false#=>;符合事实的
令人困惑的是,它看起来类似于其他赋值运算符(例如+=),但行为不同
a+=b转换为a=a+ba|a=b大致翻译为a|a=b
这是a | | a=b的近义词。区别在于,当a未定义时,a | a=b将引发namererror,而a | a=b将a设置为b。如果a和b都是局部变量,那么这种区别并不重要,但是如果其中一个是类的getter/setter方法,那么这种区别就很重要
进一步阅读:
- http://www.rubyinside.com/what-rubys-double-pipe-or-equals-really-does-5488.html