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
相关文章
相关标签/搜索