2013-02-21 86 views
2

瞭解以下代碼如何工作的問題。我是斯卡拉新手,現在已經學習了2周的語言。FOR LOOP多個發生器

for (i <- 1 to 3; j <- 1 to 3) print((10 * i + j) + " ") 

它打印11 12 13 21 22 23 31 32 33。它反過來即

i = 1 

j = 0 

分配給每個值或做每次循環即

i = 1 

j = 1 

感謝

回答

1

循環是從1到3

print((10 * i + j) + " ") 

是相當於

val tmp = (10*i)+j //* is higher than + 
print(tmp + " ") 

你的代碼的結果:

 
For i=1, j=1 --> 11 
    i=1' j=2 --> 12 
    . . 
    . . 
    i=2, j=1 --> 21 
    . . 
    i=2, j=3 --> 23 
    . . 
    i=3, j=3 --> 33 
+0

感謝我現在明白了 – 2013-02-21 19:02:25

9

這只是嵌套循環爲j時間值會被分配。 因此,對於i的每個指定值,重複所有j的值。

for (i <- 1 to 3) { 
    for (j <- 1 to 3) { 
    print((10 * i + j) + " ") 
    } 
} 

因爲for環路擴展到foreach,你的代碼也等同於:

(1 to 3).foreach { i => 
    (1 to 3).foreach { j => 
    print((10 * i + j) + " ") 
    } 
} 

也許在這種形式下,它更容易看到。

+0

是啊,這幫助了很多... thankss – 2013-02-21 19:00:56