我应该默认使用GenSeq吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我应该默认使用GenSeq吗?相关的知识,希望对你有一定的参考价值。
将GenSeq用作“默认”集合类型是最佳做法吗?它似乎是最通用的集合界面。但是我没有看到它在代码示例中广泛使用(更具体的Seq用于代替)。
不应。应该出现在API中的最通用的集合类型是:
Seq
- 顺序收集Set
- 数学集(没有重复值)Map
- 关联/关联集(概念上与离散的PartialFunction
s相同)
唯一对上述区别中性的抽象是Traversable
和Iterable
。 (例如,Map[K, V]
既是Iterable[(K, V)]
又是Traversable[(K, V)]
。
如果对于实际参数而言重要的是它的元素可能以某种(未指定的)顺序进行检查,那么Traversable
会捕获该特征。
包含“Like”或“Once”或“Gen”的类或特征名称是内部魔法的一部分,使得Scala集合展现出“最少惊喜的原则”(其中主要是在其上调用HOF的属性,例如map
或filter
产生的结果与匹配的具体类型一样,就像调用HOF的集合一样。
是。 Seq用于非并行(顺序)序列集合。
GenSeq是平行和正常序列的共同特征。
ParSeq是非顺序序列(Pun意图),它是使用并行性实现的。
GenSeq中缺少一些方法(Like contains),但根据我的经验,它们可以手工实现(您可以尝试查看Seq中的实现)。
资料来源:https://docs.scala-lang.org/overviews/parallel-collections/architecture.html
关于scala集合的另一个好页面(非平行的):https://docs.scala-lang.org/overviews/core/architecture-of-scala-collections.html
以上是关于我应该默认使用GenSeq吗?的主要内容,如果未能解决你的问题,请参考以下文章
我可以在 android studio 的片段上使用 Firebase 吗?