+ = scala中int的方法

时间:2016-04-29 11:58:17

标签: scala types primitive-types

+ =(或任何赋值运算符)是用于Int类型的scala中的方法。

例如,

var x=5
x+=1

这里我只能在变量时使用+ =方法。

我无法做到,

5+=1

scala编译器是否将此方法视为特殊情况?

为什么它在scala.Int类中不可用?

1 个答案:

答案 0 :(得分:11)

没有+=方法,编译器将其扩展为x = x + 1。详情见specification

6.12.4分配操作员

  

让我们在中缀操作中考虑一个赋值运算符,例如+ =   l + = r,其中l,r

     

是表达式。可以将此操作重新解释为操作   这对应于作业

l = l + r
     

除了操作的左侧l仅被评估一次。

     

如果满足以下两个条件,则会重新解释   满足。

     
      
  1. 左侧l没有名为+ =的成员,也无法通过隐式转换转换为具有成员的值   名为+ =。

  2.   
  3. 赋值l = l + r是类型正确的。特别是这意味着l指的是可以分配给的变量或对象,   并且可以转换为名为+。

  4. 的成员的值