如何在 Julia 中重载 +=?

How do I overload += in Julia?

我正在尝试了解运算符重载在 Julia 中的工作原理。该手册非常简短,并以 +() 作为示例函数,然后声明所有运算符都可以使用其明显的名称进行重载(还提供了非明显名称的列表)。

但是 +=? 呢?函数 +=() 似乎根本不存在,+=!() 也不存在(因为它是一个修改函数)。我经常通过先定义 += 来重载 C++ 中的运算符,然后使用基于复制和 += 的简单 +

在我的例子中,我什至认为我不需要 +,只需要 += 的行为...我意识到我可以编写自己的修改函数,但运算符语法会很好. (出于好奇,*=/=$= 等是如何工作的?)

没有+=函数。它只是 a = a + b 的语法糖。

它也没有变异。所以 a += b 计算 a + b 然后更改 a 以引用结果。这意味着 a + b.

的结果有内存分配