可能重复:
红宝石中的条件语句和赋值
在重构一些 rails 代码时,我在 ruby 中遇到了一些语法异常。
给定以下方法
def get_value
42
end
为什么这行得通?
if value = get_value
puts value
end
虽然这没有?
puts value if value = get_value
后者给出一个错误:undefined local variable or method `value' for main:Object (NameError)
。我以为这些表达是平等的?如果在 puts 之前评估 if 块,则value
不应未定义。