繁体   English   中英

Scala 一些冗余协方差

[英]Scala Some redundant covariance

Scala 标准库包含Option类型。
Option 类型本身是协变类型,从它的声明sealed abstract class Option[+A]可以明显看出这一点。

问题是:
为什么它的构造函数Some也是协变的final case class Some[+A](x: A) extends Option[A]
模式匹配是否需要这种方式?
或者也许它是为了更好的可读性?

对我来说,这似乎是多余的,因为除了模式匹配之外,我没有任何理由直接在任何地方使用Some ,但目前我看不出它如何依赖于协方差。

首先,您必须了解,正如@Dima 所说, Some[T]不是构造函数,而是Option[T]的子类。

一旦我们确定了这一点,使用DogAnimal解决具有方差的问题总是更容易:

Some[Dog]Some[Animal]吗? 我想你会同意答案是肯定的。

务实地说,它不会有太大变化,因为您很少使用Some[Dog] ,而是使用Option[Dog] ,但它可能会发生(例如,当您使用不适用的情况下unapply其签名返回Some[Tuple] ),那么为什么不在我们处理它的时候添加方差呢?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM