导致无效分配位置错误的短路评估
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)
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)