2017-04-04 136 views
0

我是新來斯卡拉,和我試圖從Java轉換for循環:斯卡拉循環多個計數器

for(int x=1, y=2; x<=5; x++, y+=2) 
    System.out.println(x+y); 

我試圖壓縮在斯卡拉的值,因爲我不能找到一種方法,具有多個計數器,其是非嵌套:

val a = Seq(1 to 5) 
val b = Seq(2 to 10 by 2) 
for((x,y) <- a.zip(b)) 
    println(x+y) 

但是上面的代碼給此錯誤:

類型不匹配;發現:scala.collection.immutable.Range必需:字符串

有誰知道如何解決這個問題?我寧願只用循環,而不用while循環。

+0

我不知道斯卡拉,但如果你這樣做,你可以直接去用'序列的結果(3到15乘3)'而不是有兩個變量。 – maraca

回答

2

試試這個,無需包裹RangeSeq

val a = 1 to 5 
val b = 2 to 10 by 2 
for(
    (x,y) <- a.zip(b) 
) 
println(x+y) 
2

您可以試試。 。 。

((1 to 5) zip (2 to 10 by 2)).foreach(x => println(x._1+x._2)) 

因爲Scala for內涵是從其他語言for()循環十分不同,它往往是一個好主意,適合初學者,以避免他們,直到他們已經獲得的mapflatMapforeach足夠的知識。