scala - "-"中的 "+"和 `trait Function2[-T1, -T2, +R] extends AnyRef` 的解释

标签 scala

“-”和“+”用于特征签名中的输入和返回类型如trait Function2[-T1, -T2, +R] extends AnyRef的目的和定义是什么?

有人可以在规范中建议确切的位置来阅读它吗?

最佳答案

这些是方差和协方差注释,用于指定子类型关系如何用于多态类型。例如 List[+A]表示列表的内容是协变的:如果你有一个类型 Dog这是 Animal 的子类型然后是类型 List[Dog]将是 List[Animal] 的子类型.在有趣的符号中:如果您有类型 A<:B并且您已经定义了一个类型 X[+T]具有协变类型参数 T然后 X[A]<:X[B] . “-”用于逆变,我发现很难举一个例子来说明它的用法:一般来说,如果 A<:B你有一个类型 X[-T]然后 X[B] <: X[A] .你可能想看看 coursera 的编程语言类(class),我认为它解释了这一点,以及为什么函数的参数是逆变的,结果是协变的。

关于scala - "-"中的 "+"和 `trait Function2[-T1, -T2, +R] extends AnyRef` 的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25277963/

相关文章:

scala - 在 Play 中通过 "activator run"运行时获取要编译的资源

scala - 我可以从 Scala 中的重载方法中获取函数吗?

Scala 的 @BeanProperty 选项

scala - 无法将带有 zipWithIndex 的 rdd 转换为 Spark 中的数据帧

scala - 将 Option 中的值转换为另一种类型

java - 不支持的密码套件 TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256

sbt 上的 ScalaTest 没有运行任何测试

scala - Scala 有延迟定义常量吗?

scala - 如何在不发出警告的情况下匹配未知的泛型类型

scala - 递归累积集合元素