scala for循环

For循环控制

Scala也为for循环这一常见的控制结构提供了非常多的特性,这些for循环的特性被称为for推导式或for表达式。

4.4.1 范围数据循环(To)

1)基本语法

// java for循环语法

for(int i = 0; i < 10; i++){

    System.out.println("i=" + i);

}

// scala for循环语法

for(i <- 1 to 10){

    println("i=" + i)

}

// 输出:从1~10(包含 1 和 10 )

(1)i 表示循环的变量,<- 规定to

(2)i 将会从 1-3 循环,前后闭合

4.4.2 范围数据循环(Until)

1)基本语法

// 方法一:

for(i <- 1 until 10) {

print("i=" + i)

}

// 输出:从1~10(包含 1,不包含 10 )

// 方法二:

for(i <- Range(1,10)) {

print("i=" + i)

}

(1)这种方式和前面的区别在于i是从1到3-1

(2)即使前闭合后开的范围

4.4.3 循环守卫

1)基本语法

for(i <- 1 to 3 if i != 2) {

print(i + " ")

}

说明:

(1)循环守卫,即循环保护式(也称条件判断式,守卫)。保护式为true则进入循环体内部,为false则跳过,类似于continue。

(2)上面的代码等价

for (i <- 1 to 3){

    if (i != 2) {

print(i + " ")

}

}

4.4.4 循环步长by

1)基本语法

for (i <- 1 to 10 by 2) {

println(“i=” + i)

}

说明:by表示步长

2)案例实操

需求:输出1到10以内的所有奇数

for (i <- 1 to 10 by 2) {

println(“i=” + i)

}

输出结果

i=1

i=3

i=5

i=7

i=9

4.4.5 嵌套循环

1)基本语法

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

    println(" i =" + i + " j = " + j)

}

说明:没有关键字,所以范围后一定要加;来隔断逻辑

2)基本语法

上面的代码等价

for (i <- 1 to 3) {

    for (j <- 1 to 3) {

        println(“i =” + i + " j=" + j)

    }

}

4.4.6 引入变量

1)基本语法

for(i <- 1 to 3; j = 4 - i) {

println("i=" + i + " j=" + j)

}

说明:

(1)for推导式一行中有多个表达式时,所以要加 ; 来隔断逻辑

(2)for推导式有一个不成文的约定:当for推导式仅包含单一表达式时使用圆括号,当包含多个表达式时,一般每行一个表达式,并用花括号代替圆括号,如下:

for {

    i <- 1 to 3

    j = 4 - i

} {

    println(“i=” + i + " j=" + j)

}

2)案例实操

上面的代码等价于

for (i <- 1 to 3) {

    var j = 4 - i

    println(“i=” + i + " j=" + j)

}

4.4.7 循环返回值

1)基本语法

val res = for(i <- 1 to 10) yield i

println(res)

说明:将遍历过程中处理的结果返回到一个新Vector集合中,使用yield关键字。

注意:开发中很少使用。

2)案例实操

需求:将原数据中所有值乘以2,并把数据返回到一个新的集合中。

var res = for(i <-1 to 10) yield {

i * 2

}

println(res)

输出结果:

Vector(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)

4.4.8 倒序打印

1)说明:如果想倒序打印一组数据,可以用reverse。

2)案例实操:

需求:倒序打印10到1

for(i <- 1 to 10 reverse){

println(i)

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值