Har*_*ran 3 types scala primitive-types
+ =(或任何赋值运算符)是用于Int类型的scala中的方法.
例如,
var x=5
x+=1
Run Code Online (Sandbox Code Playgroud)
这里我只能在变量时使用+ =方法.
我无法做到,
5+=1
Run Code Online (Sandbox Code Playgroud)
scala编译器是否将此方法视为特例?
为什么它在scala.Int类中不可用?
Lee*_*Lee 11
没有+=方法,它x = x + 1由编译器扩展.这在规范中有详细说明:
6.12.4赋值运算符
让我们在中缀操作l + = r中考虑赋值运算符,例如+ =,其中l,r
是表达.可以将该操作重新解释为对应于分配的操作
Run Code Online (Sandbox Code Playgroud)l = l + r除了操作的左侧l仅被评估一次.
如果满足以下两个条件,则重新解释.
左侧l没有名为+ =的成员,也无法通过隐式转换转换为名为+ =的成员的值.
赋值l = l + r是类型正确的.特别地,这意味着l指的是可以分配给的变量或对象,并且可以转换为具有名为+的成员的值.