Scala 引用“的一般方式”;列表“;在斯卡拉?

Scala 引用“的一般方式”;列表“;在斯卡拉?,scala,Scala,如何以更通用的方式引用ArrayBuffer和Vector 例如,我的一个函数将向量作为参数,而另一个函数返回ArrayBuffer。 我可以使用的常见“iterface”是什么 例如,在Java中,我可以使用列表或集合接口来传递它们。我将使用或更通用的接口,这也适用于映射s。有关集合类之间继承关系的概述,请参阅 您将看到这是ArrayBuffer和Vector的共同特征 编辑:IndexedSeq与Seq: 从文档中可以看出:索引序列不会添加任何新方法wrt Seq,但保证了随机访问模式的高效

如何以更通用的方式引用ArrayBuffer和Vector

例如,我的一个函数将向量作为参数,而另一个函数返回ArrayBuffer。 我可以使用的常见“iterface”是什么

例如,在Java中,我可以使用列表集合接口来传递它们。

我将使用或更通用的接口,这也适用于
映射
s。

有关集合类之间继承关系的概述,请参阅

您将看到这是ArrayBuffer和Vector的共同特征

编辑:IndexedSeq与Seq:


从文档中可以看出:
索引序列不会添加任何新方法wrt Seq,但保证了随机访问模式的高效实现。
这意味着,在这种情况下,您也可以使用Seq,因为在任何情况下,实现都将由ArrayBuffer和Vector提供。

为什么不使用Traversable或Seq?您是对的,这对于Vector和ArrayBuffer(+1)
SeqLike
在这种情况下没有多大用处,因为您仍然可以提供作为类型参数的实际表示形式
Seq
是这里惯用的选择,它比
Traversable
限制性更小,并且有一些方法的实现,它们的性能也比Traversable的sSee好。为什么不仅仅是“Seq”?我是说你怎么决定?在java中,我只有有限的选择…啊,无限选择的诅咒…来自文档:
索引序列不会添加任何新方法wrt Seq,而是承诺有效实现随机访问模式。
这意味着,在这种情况下,您也可以使用Seq,因为在任何情况下,ArrayBuffer和Vector都将提供实现。您能否用此评论修改您的答案,以便我可以接受?谢谢