Scala Iterable和IterableLike差异和用途

时间:2014-11-21 10:29:09

标签: scala scala-collections

IterableIterableLike之间有什么区别?

每个适当的预期的用途是什么?

即,以下方法在参数中接受的集合的种类有何不同?

def f[A](c: Iterable[A]) = c.foreach(print)
f: [A](c: Iterable[A])Unit

def g[A,B](c: IterableLike[A,B]) = c.foreach(print)
g: [A, B](c: scala.collection.IterableLike[A,B])Unit

1 个答案:

答案 0 :(得分:2)

Iterable只是将几个特征组合在一起,包括IterableLike。我认为这主要是一个实现细节;作为图书馆组织的问题,有些方法更多地放在IterableLike上,而不是反映任何真正的区别。我不知道任何实现IterableLike并且没有实现Iterable的类(并且反过来是不可能的,因为Iterable扩展IterableLike);我有兴趣听到任何。据我所知,你的方法会表现得一样。

我建议始终使用Iterable(除非您正在处理scala标准库的内部实现)。