scala-for的基本应用

scala-for的应用:

直接上代码。

  def testfor01: Unit ={

    val nieces = List("emily", "hananh", "mercedes", "porsche")
    /*
    关键字yield:for循环中的yield会把当前的元素记录下来,
                 保存到集合中,循环结束后将返回该集合。
                 scala中for循环是有返回值的,如果被循环的是Map,则返回的就是Map,
                 如果被循环的是List,则返回的是List,以此类推

    scala遍历集合的方式较多:for循环、foreach循环、while循环、map映射、flatmap等

    使用to或until进行for循环时,to与until区别:
        to:包含上下限,是闭区间
        until:不包含上下限,是开区间
     */
    for (n <- nieces) yield println(n.capitalize)
    /*
        for (n <- nieces)这种for推导式中,失败的匹配则会被安静的忽略
     */
    nieces.foreach(nie => println(nieces.mkString))


    //2、for循环可作为计时器
    println("------for as a timer------")
    val a = Array("apple", "banana", "orange")
    a.foreach(println)
    for (i <- 0 until a.length if i != 1) println(s"$i is ${a(i)}")


    //3、卫语句(for循环中if判断),此处to 与until的功能一样
    //卫语句通常作为筛选集合,根据具体要求,可使用集合中的filter、take、drop等方法替代for循环
    println("------ 在for循环中有if语句嵌套 ------")
    for (x <- 0 to 5 if x != 3) println(x)
    //在for循环中嵌套if语句,可以同时嵌套多个if语句
    for (wei_x <- 0 to 5 if wei_x % 2 == 0 if wei_x == 2) println(wei_x)


    System.out.println("------ 遍历Map集合 ------")
    //遍历Map集合
    val names = Map("fname" -> "Robert", "lname" -> "Goren")
    for ((k, v) <- names) println(s"key: $k, value: $v")
  }

     

  def testfor02: Unit ={

    val nieces = List("emily", "hananh", "mercedes", "porsche")

    //for推导:通过for-yield的应用for循环是有返回值的。
    val str01: List[String] = for (n <- nieces if !n.contains("emily")) yield  n+" ... dd"
    str01.foreach(println)

    //for推导:在yield中有多行代码时,使用在yield中使用代码块
    val str02 = for (n <- nieces if ! n.contains("emily")) yield {
      val str = n+" ... dd"
      str
    }

    str02.foreach(println)

  }

  scala-for应用过程中注意for内的循环是开区间还是闭区间,若使用for-yield守卫,要注意yield的返回对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值