刚开始使用 Scalavar c = 0
c += 1
作品c.+=
给我 error: value += is not a member of Int
+=
在哪里定义?
最佳答案
Section 6.12.4 Assignment Operators of the Scala Language Specification (SLS)解释了如何对这种复合赋值运算符进行脱糖:
l ω= r
(其中
ω
是除 <
、 >
、 !
之外的任何运算符字符序列,并且不以 =
开头)被脱糖为l.ω=(r)
IFF
l
有一个名为 ω=
的成员或可隐式转换为具有名为 ω=
的成员的对象.否则,它会被脱糖
l = l.ω(r)
(除了
l
保证只被评估一次),如果类型检查。或者,更简单地说:编译器将首先尝试
l.ω=(r)
如果这不起作用,它会尝试 l = l.ω(r)
.这允许类似
+=
像在其他语言中一样工作,但仍然被覆盖以做不同的事情。
关于scala - Scala 的 += 在 Int 的上下文中定义在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41774017/