scala for循环

如果你是程序员,对for语句肯定已经了如指掌了,但是scala中的for和c,java中的for有一些不同之处,还是需要我们来学习一下的。

最简单的scala for语句

for(i <- 1 to 10) {
    println("i is " + i);
}

上面的for i从1到10(包含10)来做循环

scala在for循环中对循环变量i的赋值用了“<-”符号,1 to 10指定了一个范围,i在这个范围内做循环,这个范围包括1和10

这里的1 to 10本质上是一个方法,这个方法返回的是一个Range类型,它等价于下面的代码

(1).to(10);

在scala中一切皆是对象所以,这里的1就是一个对象,他有一个to方法,返回一个Range。

如果在for循环中只有一条语句,那么可以省略掉花括号,如下代码

for(i <- 1 to 10)
    println("i is " + i);

until 和 to关键字

在scala中还有一个和上面的to关键字有类似作用的关键字until,它的不同之处在于不包括最后一个元素

for(i <- 1 to 10) {
    println("i is " + i);
}
for(i <- 1 until 10) {
    println("i is " + i);
}

上面代码中的第一个循环会循环打印1到10包括10,而第二个循环打印1到9,不包含10

for语句遍历数组

可以通过下面两种方法遍历数组元素

var myArray : Array[String] = new Array[String](10);
for(i <- 0 until myArray.length){
    myArray(i) = "value is: " + i;
}
for(value : String <- myArray ) {
    println(value);
}

上面代码中第一个for是通过数组下标来做遍历的,而第二个for是直接遍历数组的元素

for语句和if条件结合过滤部分循环

在scala的for循环语句中可以使用if语句来做for条件过滤,例如

var myArray : Array[String] = new Array[String](10);
for(i <- 0 until myArray.length){
    myArray(i) = "value is: " + i;
}
for(value : String <- myArray if value.endsWith("5")) {
    println(value);
}

注意第二个for语句的括号内有if关键字,它后面紧跟if的条件使只有满足条件的元素来执行for语句块。上面的语句和下面的语句是类似的,不过更精简了一些

for(value : String <- myArray) {
    if value.endsWith("5"){
        println(value);
    }
}

scala的for语句中支持多个if条件,多个if之间用;来分割,如下例子

for(value : String <- myArray
    if value.endsWith("5");
    if value.indexOf("value") != -1 ) {
    println(value);
}

多个if条件必须同时满足,才会执行for语句块内的代码

上面的for语句和下面的语句是等价的

for(value : String <- myArray) {
    if( value.endsWith("5") && value.indexOf("value") != -1){
        println(value);
    }
}

嵌套循环

如下是一个嵌套for循环的例子,我们声明了一个二维的字符串数组,在for循环里面做遍历

var myArray : Array[Array[String]] = new Array[Array[String]](10);
for(i <- 0 until myArray.length){
    myArray(i) = new Array[String](10);
    
    for(j <- 0 until myArray(i).length){
      myArray(i)(j) = "value is: " + i + ", " + j;
    }
}

上面的嵌套for语句,也可以简写如下

for(anArray : Array[String] <- myArray;
    aString : String        <- anArray ) {

    println(aString);
}

上面的for语句中有两个范围的遍历,首先是anArray对myArray的遍历,然后是aString对anArray的遍历

scala的for循环中还支持中间变量的绑定

如下例子在嵌套的for循环中多了aStringUC的中间变量,这个中间变量是aString的大写,同时在这个for语句中还有两个if语句

for(anArray : Array[String] <- myArray;    
    aString : String        <- anArray;     
    aStringUC = aString.toUpperCase()     
    if aStringUC.indexOf("VALUE") != -1;    
    if aStringUC.indexOf("5") != -1     ) {
     println(aString); 
}

总结

scala的for循环更强大了,它可以支持下标循环,也可以直接支持对数组集合元素的遍历,还支持在for循环中使用if条件,支持将多个嵌套的for循环写到一个for语句内

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值