Ruby赋值和比较在一行中?
这似乎并不像预期的那样有效:Ruby赋值和比较在一行中?,ruby,Ruby,这似乎并不像预期的那样有效: if c = Countries.first.nil? ... do something end 比较有效,但作业无效。有没有一种方法可以同时在一行中进行比较和赋值?这是您真正想要的: if (c = Countries.first).nil? # ... do something end 在您的示例中,您将得到c=(Countries.first.nil?,因此c将是false或true 你可以这样写: unless (c = Countries.fi
if c = Countries.first.nil?
... do something
end
比较有效,但作业无效。有没有一种方法可以同时在一行中进行比较和赋值?这是您真正想要的:
if (c = Countries.first).nil?
# ... do something
end
在您的示例中,您将得到c=(Countries.first.nil?
,因此c
将是false
或true
你可以这样写:
unless (c = Countries.first)
# ... do something
end
但是要小心!我会将()
保留在适当的位置,因为否则它会看起来像是在进行比较,ruby解释器会警告您
我有时会使用这个模式,但要谨慎使用,因为它会让事情变得不那么清楚。如果要将c分配给国家/地区。首先,如果c为零:
c = Countries.first if c.nil?
为什么不像里德那样?我假设他想分配c=true或false(从
.nil?
)。。。但我可能误解了他的问题的意图。@Andrew Reed的方式将c
设置为国家。首先,0?
,但是他想把c
设置为国家。首先
然后检查如果c.nil?
这是一个很好的例子,说明了为什么使用括号很重要。或者是一个更好的例子,说明了如何将一个语句一分为二不会造成伤害。实际上,如果这是你想要的,你可以使用c | |=国家。首先
。