导致无效分配位置错误的短路评估

Short circuit evaluation causing an invalid assignment location error

Julia 的文档表明写出 if 语句的有效捷径是语法

<cond> && <statement>

我经常使用它来处理错误消息,例如length(x) < N && error("x is too short"),它按预期工作。但是,以下内容不起作用:

x = 3
x < 4 && x = 5

我收到一个形式为 syntax: invalid assignment location 的错误。这里发生了什么?

我想做的是检查 x 是否小于 4,如果是,则将 x 设置为 5。我应该执行以下操作吗?

if x < 4
     x = 5
end

这种情况有有效的短路方法吗?

您的错误是因为 && 运算符比赋值运算符 = 具有 higher precedence,因此您的代码行的执行就像您编写 (x < 4 && x) = 5 一样。

对于解决方案,您必须添加括号。

x < 4 && (x = 5)

See my code running in the browser