Scala 中 Iterable[String] 与 List[String] 的用法

usage of Iterable[String] vs. List[String] in Scala

我在阅读 Scala 脚本时发现 Iterable[string] 的大量使用。 例如:

def wordFeatures(words: Iterable[String]): Iterable[Vector] = words.map(w => Try(word2vecModel.transform(w))).filter(_.isSuccess).map(_.get)

我是 Scala 新手,我会直接使用 List[String]Array[String]Vector[String] 集合,而不是 Iterable[String]Iterable[Int]

我想也许使用 iterable 会减少内存使用和 OOM 的可能性,但不确定。

所以,问题是:在 Scala 中传递可迭代对象而不是集合作为函数的参数有什么优势?

这很方便,因为 Iterable 是 Scala 集合层次结构中的最顶层之一。接受 Iterable 函数可以处理大多数独立于具体实现的数字特定类型,函数不需要知道它。知道可以迭代什么集合就足够了。所以,这与内存优化无关,它只是 Barbara Liskov 替换原则的实现。 有用的链接: