在ruby中,是否有任何类似于|| =的运算符用于赋值:a = b if!b.nil?

时间:2011-12-28 06:00:32

标签: ruby operators

正如标题所要求的那样,是否有操作员或一些时髦的内衬来做上述事情?

为了澄清,如果这是第一次引用a,而bnil,则不应该超过b的评估为零

3 个答案:

答案 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吗?