短路计算导致无效赋值位置错误



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
对于这种情况是否有有效的短路方法?

您的错误是由于&&操作符比赋值操作符=具有更高的优先级,因此您的代码行被执行,就像您编写(x < 4 && x) = 5一样。

对于一个解决方案,你必须添加括号。

x < 4 && (x = 5)

查看我的代码在浏览器中运行

最新更新