在他的 Coursera 课程中,Martin Odesrky 教授在关于多态性和参数化类的讲座中以链表为例:
package week4
trait List[T] {
def isEmpty: Boolean
def head: T
def tail: List[T]
}
class Cons[T](val head: T, val tail: List[T]) extends List[T] {
def isEmpty = false
}
class Nil[T] extends List[T] {
def isEmpty = true
def head = throw new NoSuchElementException("Nil.head")
def tail = throw new NoSuchElementException("Nil.tail")
}
object Main extends App {
def main(args: Array[String]) {
val lst = new Cons("A", new Cons("B", new Cons("C", new Nil())))
}
}
困扰我的是最后几行中类 Nil 的实例化,new Nil()
.
如何将 Nil 定义为 anobject
而不是 Scala 类,并使其符合参数化类型 List[T] ?
我想在下面的代码行(没有实例化)中引用对象 Nil,并使其具有正确的类型
new Cons("A", new Cons("B", new Cons("C", Nil)))