【发布时间】:2023-03-04 19:47:01
【问题描述】:
全部 在阅读Scala covariance / contravariance question 及其由 Daniel Spiewak 提供的答案以及“Scala 编程”一书的第 19.3-19.7 节之后,我对 Function1[-A, +B] 的定义有另一个困惑:为什么它的第一个类型参数是逆变的?我有一个理由,就是这个类型参数保证了当有多个情况时,子类型总是比超类型出现得早,同时,子类型“是”超类型。例如:
class A
class B extends A
class C extends B
scala> val withDefault: A => B = {
| case x:B => new B
| case x:A => new B }
withDefault: A => B = <function1>
这里,(1) case x:B 早于 case x:A ,(2) Function1[A,B] <: function1>
【问题讨论】:
标签: scala