print-6ren">
gpt4 book ai didi

scala - Scala中的foreach循环

转载 作者:行者123 更新时间:2023-12-04 03:19:12 25 4
gpt4 key购买 nike

如果我有列表,则在 Scala foreach 循环中

val a = List("a","b","c","d")

我可以在没有这样的模式匹配的情况下打印它们
a.foreach(c => println(c))

但是,如果我有这样的元组
val v = Vector((1,9), (2,8), (3,7), (4,6), (5,5))

为什么我必须使用
v.foreach{ case(i,j) => println(i, j) }
  • 一个模式匹配案例
  • { 括号

  • 请解释执行两个 foreach 循环时会发生什么。

    最佳答案

    你不必,你选择。问题是当前的 Scala 编译器不解构元组,你可以这样做:

    v.foreach(tup => println(tup._1, tup._2))

    但是,如果您希望能够使用新的变量名称来引用它自己的每个元素,则必须求助于具有模式匹配的部分函数,​​该函数可以解构元组。

    这就是当你使用 case 时编译器所做的事情像那样:
    def main(args: Array[String]): Unit = {
    val v: List[(Int, Int)] = scala.collection.immutable.List.apply[(Int, Int)](scala.Tuple2.apply[Int, Int](1, 2), scala.Tuple2.apply[Int, Int](2, 3));
    v.foreach[Unit](((x0$1: (Int, Int)) => x0$1 match {
    case (_1: Int, _2: Int)(Int, Int)((i @ _), (j @ _)) => scala.Predef.println(scala.Tuple2.apply[Int, Int](i, j))
    }))
    }

    你看到它模式匹配未命名的 x0$1和看跌期权 _1_2ij , 分别。

    关于scala - Scala中的foreach循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45165065/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com