选项类型
参数化类型的一个很好的例子是 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
类型的东西。