我试图了解运营商重载在Julia中是如何工作的。手册非常简短,并以+()
作为示例函数,然后声明所有运算符都具有明显名称的可重载(还提供了非明显名称列表)。
但是+=?
怎么样函数+=()
似乎不存在,+=!()
也没有(因为它是修改函数)。我经常通过首先定义+=
来重载C ++中的运算符,然后使用基于副本和+
的简单+=
。
在我的情况下,我甚至不认为我需要+
,只是+=
的行为...我意识到我可以编写自己的修改函数,但操作符语法会很好。 (出于好奇,*=
,/=
,$=
等如何运作?)
答案 0 :(得分:7)
没有+=
功能。它只是a = a + b
的语法糖。
它也没有变异。因此a += b
计算a + b
,然后更改a
以引用结果。这意味着a + b
的结果有内存分配。