将GenSeq用作"默认"集合类型是最佳做法吗?它似乎是最通用的集合界面.但是我没有看到它在代码示例中广泛使用(更具体的Seq用于代替).
不应.应该出现在API中的最通用的集合类型是:
Seq - 顺序收集Set - 数学集(无重复值)Map- 关联/关联集(概念上与离散PartialFunctions 相同)唯一对上述区别的中立的抽象是Traversable和Iterable.(例如,Map[K, V]是Iterable[(K, V)]和Traversable[(K, V)].
如果对于实际参数而言重要的是它的元素可以以某种(未指定的)顺序检查,则Traversable捕获该特征.
包含"Like"或"Once"或"Gen"的类或特征名称是内部魔法的一部分,使得Scala集合展现出"最少惊喜的原则"(其中主要是在其上调用HOF的属性,例如map或者filter产生一个匹配的具体类型的结果,作为调用HOF的集合的结果.