我知道我可以使用x.foreach {...}語法,但我想明確地使用循環。我如何在Scala中做到這一點?我嘗試使用下面的代碼,但它抱怨hasNext和未來不是的成員Iterable [T]。如何使用循環迭代scala集合?
while (it.hasNext)
println("\t" + it.next.toString())
我知道我可以使用x.foreach {...}語法,但我想明確地使用循環。我如何在Scala中做到這一點?我嘗試使用下面的代碼,但它抱怨hasNext和未來不是的成員Iterable [T]。如何使用循環迭代scala集合?
while (it.hasNext)
println("\t" + it.next.toString())
使用
val iter = it.iterator
while (iter.hasNext) {
println("\t" + iter.next.toString())
}
Iterable
沒有next
也不hasNext
,Iterator
了。
所以,你的代碼需要改變的東西是這樣的:
val i = it.iterator
while (i.hasNext) println("\t" + i.next.toString())
不過請注意,這不是慣用的Scala的。
你可以達到同樣的用println(it.mkString("\t","\t",""))
雖然它是慣用*優化的Scala *。 :) – ziggystar
也map
考慮,
it.iterator.map(i => "\t" + i.toString())
以及一個用於理解,
for (i <- it.iterator) yield "\t" + i.toString()
GregorRaýman指出,在Scala中這不是一個好方法,有很多方法可以根據需要迭代收集,使用foreach,map,foldLeft或其他東西。 –