丢失在Scala收藏的继承图中
发布时间:2020-12-16 21:30:57 所属栏目:安全 来源:网络整理
导读:今天我想了解列表的超类型: sealed abstract class List[+A] extends AbstractSeq[A] with LinearSeq[A] with Product with GenericTraversableTemplate[A,List] with LinearSeqOptimized[A,List[A]] 哇,所以List已经有五个直接的超类型了.我们随便挑一个:
今天我想了解列表的超类型:
sealed abstract class List[+A] extends AbstractSeq[A] with LinearSeq[A] with Product with GenericTraversableTemplate[A,List] with LinearSeqOptimized[A,List[A]] 哇,所以List已经有五个直接的超类型了.我们随便挑一个: trait LinearSeq[+A] extends Seq[A] with scala.collection.LinearSeq[A] with GenericTraversableTemplate[A,LinearSeq] with LinearSeqLike[A,LinearSeq[A]] 好的,我们来选一个最相似的名字: trait LinearSeqLike[+A,+Repr <: LinearSeqLike[A,Repr]] extends SeqLike[A,Repr] 啊,好像我们到了某个地方,只剩下一个超类型: trait SeqLike[+A,+Repr] extends Any with IterableLike[A,Repr] with GenSeqLike[A,Repr] with Parallelizable[A,ParSeq[A]] 在这一点上,我放弃了.这个图表有多深?所有这些超类型在概念上是相关的,哪些是只是实现细节或优化技巧? 如何理解这样一个巨大的遗产图? 解决方法
大多数父母确实是实现细节和优化技巧.如果你不关心它,你可以忽略任何与Like或Template结尾的任何东西.应用于列表,我们有:列表< ;: LinearSeq< ;: Seq< ;:Iterable<:可遍历.您应该使用这些traits作为代码中的参数类型(而不是实现traits).他们被描述在:
Scala Collections API
如果您想了解如何使用实现特征,或设计自己的集合,则应阅读本教程:The Architecture of Scala Collections. 此外,如果您想/需要知道实际实现给定方法的位置,请单击scaladoc中的方法签名来展开描述. “定义类”字段显示指向实现位置的链接. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容