这似乎无法按预期工作:
if c = Countries.first.nil?
... do something
end
比较有效,但作业没有。有没有办法在一行中进行比较和分配?
答案 0 :(得分:9)
这就是你真正想要的:
if (c = Countries.first).nil?
# ... do something
end
在您的示例中,您将获得c = (Countries.first.nil?)
,因此c
将为false
或true
。
你可能真的这样写:
unless (c = Countries.first)
# ... do something
end
但要小心!我会保持()
到位,因为否则它看起来就像你的比较,红宝石翻译会警告你。
我有时会使用这种模式,但要谨慎使用它,因为它会使事情变得不那么清晰。
答案 1 :(得分:2)
如果你想将c分配给Countries.first,如果c为nil:
c = Countries.first if c.nil?