Scala沒有++和--運算符,是否有一些相似的操做符或方法能夠替代?oop
由於val字段是不可變的,它們不能遞增或遞減,可是聲明爲var的Int字段是可變的,能夠使用Scala的+=和−=方法:ui
scala> var a = 1 a: Int = 1 scala> a += 1 scala> println(a) 2 scala> a −= 1 scala> println(a) 1
另一個好處是,你能夠使用相似的方法進行乘法和除法操做:scala
scala> var i = 1 i: Int = 1 scala> i *= 2 scala> println(i) 2 scala> i *= 2 scala> println(i) 4 scala> i /= 2 scala> println(i) 2
注意這些符號不是操做符,它們是做爲聲明爲var的Int字段的可用的方法實現的,試圖在val字段中使用它們會致使編譯時錯誤:code
scala> val x = 1 x: Int = 1 scala> x += 1 <console>:9: error: value += is not a member of Int x += 1 ^
正如以上所說,符號+=、−=、*=和/=操做符,它們是方法,這種用庫而不是操做符構建功能的方法是Scala中一致的模式。例如,Actors不是內置在語言中,而是做爲庫實現的。rem
這種方法的另外一個好處是,除了Int類型以外,你還能夠對其餘類型調用同名的方法。例如,Double類和Float類中也有相同名稱的方法:get
scala> var x = 1d x: Double = 1.0 scala> x += 1 scala> println(x) 2.0 scala> var x = 1f x: Float = 1.0 scala> x += 1 scala> println(x) 2.0
另外,+=、−=、*=和/=方法沒有返回值,若是你直接使用的話,會拋出異常,好比以下代碼:it
@Test def testIncrement2: Unit = { var a = 0 val b = a += 1 var c: Int = b println(b) }
異常信息以下:io
Error:(55, 17) type mismatch; found : Unit required: Int var c:Int = b
正確的代碼是:console
@Test def testIncrement: Unit = { var a = 0 a += 1 val b = a var c: Int = b println(b) }
問題參考連接:Scala - While Loop: increment with +=
type mismatch error (found: Unit, required: Int)編譯
編譯自:Scala has no ++ or -- operator; how to increment or decrement an integer?