選項型別
引數化型別的一個很好的例子是 Option 型別 。它基本上只是以下定義(在型別上定義了幾個更多方法):
sealed abstract class Option[+A] {
def isEmpty: Boolean
def get: A
final def fold[B](ifEmpty: => B)(f: A => B): B =
if (isEmpty) ifEmpty else f(this.get)
// lots of methods...
}
case class Some[A](value: A) extends Option[A] {
def isEmpty = false
def get = value
}
case object None extends Option[Nothing] {
def isEmpty = true
def get = throw new NoSuchElementException("None.get")
}
我們還可以看到它有一個引數化方法 fold
,它返回 B
型別的東西。