正如标题所要求的那样,是否有操作员或一些时髦的内衬来做上述事情?
为了澄清,如果这是第一次引用a
,而b
是nil
,则不应该超过b
的评估为零
答案 0 :(得分:1)
我不知道有任何操作员。你的回答已经是一行...如果你真的想要你可以改变if!除非。
答案 1 :(得分:0)
在ruby中,局部变量可以在没有指定实际执行的行的情况下生成:
a #=> NameError ...
if false
a = 1
end
a #=> nil
您的代码段相当于
if !b.nil?
a = b
end
如果b为nil,则不执行赋值,并且从前面的示例中,这将a的值设置为nil。如果b不是n,那么a被设置为b的值。所以这(有点令人惊讶)实际上与
相同a = b
但是,只有a
尚不存在,因此这是一种非常容易出错的做事方式。不要这样做!
答案 2 :(得分:0)
为什么不:
a = b unless b.nil?
或:
b.nil? and a = b
他们不是可读的oneliners吗?