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]就是一種多型化
沒有留言:
張貼留言