code

2016年10月26日 星期三

Scala 筆記11 - List & Polymorphism

List

List在Scala中的邏輯結構是長這樣:


每個Con cell有一個值,以及另一個object reference指向下一個con cell,最後一個con cell指向Nil,一個特別的cell class,代表list的結束。



 要建立一個List[T](1,2,3)的基礎方法:



上面是List的implementation,注意的點:

1. List[T]是一個parameterized trait (generalization)
2. Cons的constructor接受了 val head: T,這樣宣告方式相當於implement了 head method
3. Nil class中的head和tail method return type是Nothing,這是ok的,首先Nothing是所有class的subclass,所以當然也是T的subclass,另外Nothing的語義也符合Nil class此兩個methods的語義。




Polymorphism

中文是多型化,我們在上面的List implementation看到了兩種多型化:

1. subclassing: 所有extends List[T]的class都是一個subclass
2. generics: 使用parameterization [T]就是一種多型化



沒有留言:

張貼留言