2015-06-09 61 views
0

我知道我可以使用x.foreach {...}語法,但我想明確地使用循環。我如何在Scala中做到這一點?我嘗試使用下面的代碼,但它抱怨hasNext未來不是的成員Iterable [T]如何使用循環迭代scala集合?

while (it.hasNext) 
    println("\t" + it.next.toString()) 

回答

2

使用

val iter = it.iterator 
while (iter.hasNext) { 
    println("\t" + iter.next.toString()) 
} 
+1

GregorRaýman指出,在Scala中這不是一個好方法,有很多方法可以根據需要迭代收集,使用foreach,map,foldLeft或其他東西。 –

2

Iterable沒有next也不hasNextIterator了。

所以,你的代碼需要改變的東西是這樣的:

val i = it.iterator 
while (i.hasNext) println("\t" + i.next.toString()) 

不過請注意,這不是慣用的Scala的。

你可以達到同樣的用println(it.mkString("\t","\t",""))

+0

雖然它是慣用*優化的Scala *。 :) – ziggystar

0

map考慮,

it.iterator.map(i => "\t" + i.toString()) 

以及一個用於理解,

for (i <- it.iterator) yield "\t" + i.toString()