code

2016年10月29日 星期六

Scala 筆記16 - Scala built-in lists

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
}



沒有留言:

張貼留言