Scala学习三:循环

来源:互联网 发布:电影票房数据 编辑:程序博客网 时间:2024/06/09 23:17

Scala学习三:循环


Scala 循环

Scala中有for,while两种形式while循环的方式与Java中的一样,不再赘述.

Scala中没有Java的

for(变量声名; 条件控制; 变量控制)

只有

    for(n <- 1 to n)         // 包含n值    // 及     for(n <- 1 until n)        // 不包含n值

Scala for循环中的变量名前不需要val,var。类型是集合中的变量类型。作用域郁着循环结束。

Scala中没有break, continue来退出,控制循环.

import scala.util.control.Breaks._breakable {    for (...) {        if (...) {            break        }    }}

breakable 必须完全包裹住整个for循环块,否则将不能退出循环。
break 跳出循环是通过抛出 和 捕获 异常来完成的。对于时间要求很高的情况,应减少使用。


高级for循环形式:

Scala的for循环可以有多个 变量<-表达式 形式的生成器,每个生成器之间用 “;” 隔开

// Scala代码for(outer <- 1 to 3; inner <- 1 to 3){    println(10 * outer + inner)}
// Java代码// 其作用就相当于Java的双层for循环for(int outer = 1; outer <= 3; outer++){    for(int inner = 1; inner <= 3; inner++){        System.out.println( 10 * outer + inner)    }}

for循环生成器守卫:

// Scala代码:// 同时每个生成器可以带一个守卫:for(outer <- 1 to 5 if outer % 2 != 0; inner <- 1 to 5 if inner % 2 == 0){    println(10 * outer + inner)}

其作用就相当于Java的双层for循环:

// Java代码:for(int outer = 1; outer <= 5; outer++){    if(outer % 2 != 0){        for(int inner = 1; inner <= 5; inner++){            if(inner % 2 == 0){                System.out.println( 10 * outer + inner)            }        }    }}

而且还可以使用任意多的定义,引用可以在循环中使用的变量:

for(outer <- 1 to 5; middle = 6 - outer ; inner <- middle to 5) {    println(10 * outer + inner)}

for yield:

如果For循环体内以yield开始,则循环会构成一个集合,每次迭代生成集合中的一个值

val col = for(a < 1 to 5) yield {    "Word" + a}// col是一个集合:IndexedSeq[String]

错误的写法,如果返回集合。yield必须紧跟for循环表达式。

for(a < 1 to 5){    yield {        "Word" + a    }}
原创粉丝点击