2014-11-21 99 views
2

IterableIterableLike有什么区别?Scala Iterable和IterableLike的区别和用法

还有哪些appropiate预期每个用途?

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

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

[可能是“特质”和“模板特质”之间的差异的重复?](http://stackoverflow.com/questions/4599937/what-is-the-difference-between-a-trait - 和 - 一个模板性状) – 2015-07-03 14:26:49

回答

2

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

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

相关问题