Scala list性質
1. immutable (array是mutable)2. recusive (array是flat)
3. non-homogeneous (每個element不一定要同一種type)
4. empty list factory method 為List(),type是Nil
如何建立一個list
我們可以用List(), List(1,2)之類的factory method來建立List instance,但那是compiler對用case keyword宣告class definition所做的companion object所給予的factory methods。建立List instance的另一個方法是用 :: operator,就是之前說的cons:
cons operator是right associate,所以 x::y::Nil == x::(y::Nil)
事實上有:的operator都是右方operand的呼叫,所以上式實際上是 (Nil.::(y)).::(x)
List patterns for matching
仍是按照construction的模式去解構比對,以下的insert function示範了如何使用list constructor pattern matching:
def insert(x:Int, xs:List[Int]):List[Int] = xs match { case Nil => List(x) case y::ys => if (x > y) y::insert(x,ys) else x::xs }
沒有留言:
張貼留言