一、標識符 二、中置操作符 中置表達式,操作符位於兩個參數之間 1 to 10 1.to(10) 1 -> 10 1.->(10) 三、一元操作符 a.標識符() 1 toString 1.toString() +、-、!、~ 可以作為前置操作符,轉換成名為 unary_操作符 的方法調用 -a 和 ...
一、標識符
二、中置操作符
中置表達式,操作符位於兩個參數之間
1 to 10
1.to(10)
1 -> 10
1.->(10)
三、一元操作符
a.標識符()
1 toString
1.toString()
+、-、!、~ 可以作為前置操作符,轉換成名為 unary_操作符 的方法調用
-a 和 a.unary_- 一樣
四、賦值操作符
a+=b a = a + b
五、優先順序
+ ->優先順序相同
中置操作符高於後置操作符
a 中置操作符 b 後置操作符 等同於
(a 中置操作符 b) 後置操作符
六、結合性
所有操作符都是左結合的,除了:
- :操作符
- 賦值操作符
構造列表的操作符::是右結合的
1::2::Nil 1::(2::Nil)
2::Nil Nil.::(2) 右結合的二元操作符是其第二個參數的方法
七、apply和update方法
用於數組和映射
f.update(arg1, arg2, ..., value) f(arg1,arg2,...) = value 更新值
f.apply(arg1,arg2,...) f(arg1,arg2,...) 獲取值
val scores = new scala.collection.mutable.HashMap[String,Int] scores("Bob") = 100 // scores.update("Bob",100) val bobsScore = scores("Bob") // val bobsScore = scores.apply("Bob") println(bobsScore)
被用在伴生對象中,用來構造對象而不用顯示地使用new
class Fraction(n:Int, d:Int){ } object Fraction{ def apply(n:Int, d:Int) = new Fraction(n, d) }
這樣直接可以使用Fraction(3,4)來構造出一個分數,而不用 new Fraction(3,4)
八、提取器
所謂提取器就是一個帶有unapply方法的對象,把unapply當做伴生對象中apply方法的反向操作。
unapply方法接收一個對象,然後從中提取值,通常這些值是當初用來構造對象的參數值
unapply返回的是一個Option,包含一個元組。
object Fraction{ def apply(n:Int, d:Int) = new Fraction(n, d) def unapply(input: Fraction) ={ if(input.den == 0) None else Some((input.num, input.den)) } }
此例中返回Option[(Int, Int)]
九、帶單個參數或無參數的提取器
十、unapplySeq方法
參考《快學Scala》