scala循環

今天作了一個scala的for循環實驗:scala

for(a<- 1 to 3;b<- 1 to 3)
    {
      println("a="+a)
      println("b="+b)
    }

實驗結果以下:code

a=1
b=1
a=1
b=2
a=1
b=3
a=2
b=1
a=2
b=2
a=2
b=3
a=3
b=1
a=3
b=2
a=3
b=3

有點至關於數學中的組合問題。數學

val n=List(1,2,3,4,5,6,7,8,9,10)
    for(ns<-n if(ns!=3);if(ns<8))
    {
      println(s"ns=$ns")
    }

實驗結果以下:it

ns=1
ns=2
ns=4
ns=5
ns=6
ns=7

for循環能夠看成一個變量的返回值,語法格式以下: var retVal=for(x<- list if(condition1);if(condition2);…)yield x 這種for yield循環中不能有執行語句嗎?io

var v = for(j<-n if j!=3; if j<8) yield j

    for(vv<-v)
    {
      println(s"vv=$vv")
    }

執行結果:for循環

vv=1
vv=2
vv=4
vv=5
vv=6
vv=7

若是代碼以下:編譯

var v = for(j<-n if j!=3; if j<8) 
{
    println(j)
}
yield j

則編譯時出現錯誤,提示‘;'expected but yield foundimport

scala沒有break語句,須要用其它方法來實現,有多種方法,我列出一種:變量

import util.control.Breaks._

val n=List(1,2,3,4,5,6,7,8,9,10)
breakable{
    for(k<-n)
    {
      if(k==5) 
        break
      else
        println(k)
    }
    }

執行結果:List

1
2
3
4

continue語句也沒有,也須要變通(注意下面代碼中breakable的位置與上面代碼中的不一樣之處):

import util.control.Breaks._

val n = List(1,2,3,4,5,6,7,8,9,10)
for(k<-n)
    {
      breakable{
        if(k==5) 
          break
        else
          println(k)
      }
    }

執行結果:

1
2
3
4
6
7
8
9
10
相關文章
相關標籤/搜索