Scala学习(三)- for循环

for循环

语法格式:

for( var x <- Range ){
   statement(s);
}

说明:Range可以是一个数字区间:i to j  [i , j](包含首尾),或者i until j [i , j)(包头不包尾)

object ForDemo {
  def main(args: Array[String]): Unit = {
    val start = 1
    val end = 10
    for(x <- start to end) {
      println("靓仔,你好:" + x)
    }
  }
}

object AnotherForDemo {
  def main(args: Array[String]): Unit = {
    val start = 1
    val end = 10
    for(x <- start until end) {
      println("until 靓仔,你好:" + x)
    }
  }
}

 

条件(过滤)循环:

for( var x <- Range if x > 3){
   statement(s);
}
/**
  * @author fengchengliang@126.com
  * @date 2019/8/24
  */
object IfForDemo {
  def main(args: Array[String]): Unit = {
    val start = 1
    val end = 10
    for (x <- start to end if x > 5) {
      println(s"条件(过滤)循环::x = ${x}")
    }
  }
}

引入变量:

/**
  * @author fengchengliang@126.com
  * @date 2019/8/24
  * 等价于for循环嵌套
  */
object MultipleForDemo {
  def main(args: Array[String]): Unit = {
    var idx = 0
    for(i <- 1 to 3; j <- 2 to 4) {
      idx += 1
      println(s"${idx} -> i = ${i}, j = ${j}")
    }
  }
}

查看反编译源码即可知道,这是一个嵌套for循环

for循环小括号()替换成花括号{}

/**
  * @author fengchengliang@126.com
  * @date 2019/8/24
  */
object ForDemo2 {
  def main(args: Array[String]): Unit = {
    for(x <- 1 to 2 ; y <- 2 to 3) {
      println(s"小括号() for 循环:${x},${y}")
    }
    println("------------这是一条忧伤的分割线----------------")
    for{
      x <- 1 to 2
      y <- 2 to 3
    } {
      println(s"花括号{} for 循环:${x},${y}")
    }
  }
}

对于for循环,小括号()、花括号{}都是可以的

不成文约定:

  • 小括号(),有一个条件的时候使用
  • 花括号{}, 有多个条件的时候使用,换行可以省略分号;

不过不按约定写也是可以的,如图:

for步长控制:

语法格式:

for( var x <- Range ){
   statement(s);
}

或者

for( var x <- begin to end if x % 2 == 0){
   statement(s);
}
/**
  * @author fengchengliang@126.com
  * @date 2019/8/24
  */
object ForRangeStepDemo {
  def main(args: Array[String]): Unit = {
    for (x <- Range(1, 10, 2)) {
      println(s"x = ${x}")
    }

    println("================================")
    for (x <- 1 to 10 if x % 2 == 1) {
      println(s"x = ${x}")
    }

  }
}

for的yield用法:

yield 英文单词的意思:

v.出产(作物); 产生(收益、效益等); 提供; 屈服; 让步; 放弃; 缴出;
n.产量; 产出; 利润;

 

语法格式:

var retVal = for{ var x <- List
     if condition1; if condition2...
}yield x

案例:

/**
  * @author fengchengliang@126.com
  * @date 2019/8/24
  */
object YieldDemo {
  def main(args: Array[String]): Unit = {
    val destination: List[String] = List("昆明", "大理", "丽江", "香格里拉", "泸沽湖")
    val retVal = for (x <- destination) yield {
      s"我要去[${x}]旅游;)"
    }
    println(retVal)
  }
}

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值