PartialFunction 的函数定义如下:
trait PartialFunction[-A, +B] extends (A) ⇒ B
PartialFunction 将允许我们使用case
with collect
on collection 进行过滤。例如,当您有整数列表和 PartialFunction isEven[Int, String] 时,如果集合中的值为偶数,它将转换为 String。因此它返回一个新集合,其返回类型+B
在定义中。
我的问题是,为什么contravariant -A
和covariance +B
?它基本上有能力接受任何输入到任何输出。为什么我们需要指出输入应该是A类型的任何类型或超类型,而返回类型应该是B或其子类?我们不能说:
trait PartialFunction[A, B]