scala的for循環

Scala沒有與Java對應格式的for循環結構,但是Scala的for循環更加靈活。結構格式如下:

for (i <- 1 to n) {

   do something

  }

其中i不用val或var提前聲明,直接用,加上val或var反而報錯;1 to n表示需要循環的範圍,注意,to形成的是包括邊際的範圍,此即包括1和n。如果需要多重循環,還可以用分號隔開後再加一範圍,如下:

for (i <- 1 to n; j <- 1 to n) {

   do something

  }

循環的順序是,針對每一個i,會遍歷所有j,也就是說,j是內循環,i是外循環。下面的例子可以好好體會這個順序。

這種“變量<-表達式”的形式在Scala裏叫生成器。可以有多個生成器,用分號隔開即可。

除此之外,每個生成器都可以帶一個條件,叫守衛,以if開頭的Boolean表達式,如:

for (i <- 1 to n, j <- 1 to n if i != j) {

   do something

  }


下面是用Scala實現的乘法口訣表,是不是很簡練?哈哈

scala> def cal():Unit = {
     | var i,j = 1
     | for (i <- 1 to 9;j <- 1 to 9 if i >=j) {
     | print(j + "x" + i + "=" + i*j + "  ")
     | if(i == j)println }
     | }
cal: ()Unit

運行結果自然就是一張乘法口訣表啦

scala> cal
1x1=1
1x2=2  2x2=4
1x3=3  2x3=6  3x3=9
1x4=4  2x4=8  3x4=12  4x4=16
1x5=5  2x5=10  3x5=15  4x5=20  5x5=25
1x6=6  2x6=12  3x6=18  4x6=24  5x6=30  6x6=36
1x7=7  2x7=14  3x7=21  4x7=28  5x7=35  6x7=42  7x7=49
1x8=8  2x8=16  3x8=24  4x8=32  5x8=40  6x8=48  7x8=56  8x8=64
1x9=9  2x9=18  3x9=27  4x9=36  5x9=45  6x9=54  7x9=63  8x9=72  9x9=81



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章