【发布时间】:2012-01-28 23:01:54
【问题描述】:
正如标题所问,是否有运营商,或者一些时髦的班轮来做上述事情?
澄清一下,如果这是第一次引用 a,并且 b 是 nil,则不应持续超过 b 的评估为零。
【问题讨论】:
-
签名被移除,请参考FAQ。
正如标题所问,是否有运营商,或者一些时髦的班轮来做上述事情?
澄清一下,如果这是第一次引用 a,并且 b 是 nil,则不应持续超过 b 的评估为零。
【问题讨论】:
为什么不:
a = b unless b.nil?
或:
b.nil? and a = b
它们不是可读的单行线吗?
【讨论】:
在 ruby 中,局部变量可以在没有分配给它们的行的情况下实际执行:
a #=> NameError ...
if false
a = 1
end
a #=> nil
你的 sn-p 相当于
if !b.nil?
a = b
end
如果 b 为 nil,则不执行赋值,从前面的示例中,这会将 a 的值设置为 nil。如果 b 不为零,则将 a 设置为 b 的值。所以这(有点奇怪)实际上是一样的
a = b
但前提是 a 尚不存在,因此这是一种非常容易出错的做事方式。不要这样做!
【讨论】:
据我所知,没有运营商。您的回复已经是一行......如果您真的想要,您可以更改 if !除非。
【讨论】: