如何在 Julia 中重载 +=?
How do I overload += in Julia?
我正在尝试了解运算符重载在 Julia 中的工作原理。该手册非常简短,并以 +()
作为示例函数,然后声明所有运算符都可以使用其明显的名称进行重载(还提供了非明显名称的列表)。
但是 +=?
呢?函数 +=()
似乎根本不存在,+=!()
也不存在(因为它是一个修改函数)。我经常通过先定义 +=
来重载 C++ 中的运算符,然后使用基于复制和 +=
的简单 +
。
在我的例子中,我什至认为我不需要 +
,只需要 +=
的行为...我意识到我可以编写自己的修改函数,但运算符语法会很好. (出于好奇,*=
、/=
、$=
等是如何工作的?)
没有+=
函数。它只是 a = a + b
的语法糖。
它也没有变异。所以 a += b
计算 a + b
然后更改 a
以引用结果。这意味着 a + b
.
的结果有内存分配
我正在尝试了解运算符重载在 Julia 中的工作原理。该手册非常简短,并以 +()
作为示例函数,然后声明所有运算符都可以使用其明显的名称进行重载(还提供了非明显名称的列表)。
但是 +=?
呢?函数 +=()
似乎根本不存在,+=!()
也不存在(因为它是一个修改函数)。我经常通过先定义 +=
来重载 C++ 中的运算符,然后使用基于复制和 +=
的简单 +
。
在我的例子中,我什至认为我不需要 +
,只需要 +=
的行为...我意识到我可以编写自己的修改函数,但运算符语法会很好. (出于好奇,*=
、/=
、$=
等是如何工作的?)
没有+=
函数。它只是 a = a + b
的语法糖。
它也没有变异。所以 a += b
计算 a + b
然后更改 a
以引用结果。这意味着 a + b
.