我的理解是,if
行尾的语句在行首的代码之前进行评估:
'never shown' if (false)
并且可以在if
语句中进行赋值。
'shown' if (value = 'dave is king')
value #=> "dave is king"
而且,当分配一个不存在的变量时,它就会被创建。没有必要预先存在。这是真的?
如果所有这些假设都是正确的,为什么会失败?
error_array << error if (error = import_value(value))
#=> undefined local variable or method `error' for
它在数组推送之前分配给错误吗?我想了解何时评估事物。
这个确实有效:
if (error = import_value(value))
error_array << error
end
现在我真的很困惑。