迭代的目的

And*_*cus 3 collections scala

scala中,我发现了以下示例:

val set = Set(4, 6, 7, 8, 9, 13, 14)
val result = set.toIterable
Run Code Online (Sandbox Code Playgroud)

具有以下说明:

toIterable会将任何值转换Traversable为。Iterable.这是所有Scala集合的基本特征,这些集合定义了迭代器方法以迭代集合的元素

但是Set已经是Iterable,那么此方法的意义何在?如果不是这种情况,您能给我指个吗?

Mar*_*lic 5

在Scala 2.13中,不再有Traversable

更简单的类型层次结构

没有更多的TraversableTraversableOnce。他们仍然只是作为过时的别名IterableIterableOnce

调用toIterableSet是多余的,因为它只会返回此相同的集合:

此收藏作为一个Iterable[A]如果已经是集合,则不会建立新集合Iterable[A]

toIterable有影响的例子是

"Hello".toIterable
Array(1).toIterable
Run Code Online (Sandbox Code Playgroud)

隐式转换为

wrapString("Hello").toIterable
wrapIntArray(Array(1)).toIterable
Run Code Online (Sandbox Code Playgroud)

并将这些类似Java的类型放入Scala集合中。