刚开始使用Scala
var c = 0
c += 1
作品
c.+=
给了我error: value += is not a member of Int
+=
定义在哪里?
部分6.12.4 赋值运算符 Scala的语言规范(SLS)的解释这种复合赋值运算符如何脱糖:
l ?= r
(其中,?
是比其他操作者字符的任何序列<
,>
,!
并且不与启动=
)被脱糖到
l.?=(r)
IFF l
有一个名为?=
或可隐式转换为具有名为成员的对象的成员?=
.
否则,它会变得卑鄙
l = l.?(r)
(除了l
保证只评估一次),如果那个类型检查.
或者,更简单地说:编译器将首先尝试l.?=(r)
,如果这不起作用,它将尝试l = l.?(r)
.
这允许类似于+=
在其他语言中工作的东西,但仍然被覆盖以做一些不同的事情.