如果是Set
或List
,选择似乎更容易,但我该如何处理Java的Collection
,Iterable
等效?我会去Seq
吗? Traversable
? GenTraversableOnce
?
答案 0 :(得分:4)
您需要根据自己的需要做出决定。例如:根据Scala Documentation, Seq 的定义是
序列是类Iterable的可迭代集合的特例。与iterables不同,序列始终具有已定义的元素顺序。序列提供了一种适用于索引的方法。
因此,如果您希望订购受益,或者您希望按索引检索元素,则可以使用Seq
再次根据Scala Documentation,如果您主要对集合的迭代感兴趣可遍历就足够了
请注意,对于像函数返回类型这样的函数签名,有一般的好习惯,使用更通用(抽象)的数据类型来防止对函数调用者造成不必要的性能损失。
答案 1 :(得分:3)
通常情况下,它取决于来电者的需求。
Traversable是相当高的级别(你只获得foreach
)但它可能就足够了。如果您需要定义的元素顺序,将使用Seq。 GenTraversableOnce对我来说可能有点抽象,也可能对你的编码人员而言。