我们可以声明变量并在 scala 的 for 循环中使用它们吗

0 scala for-comprehension

我尝试使用 scala 中已声明的变量迭代 for 循环,但收到错误“不是有效的块语句”

我已经删除了变量声明行并且它工作正常。

 object FirstObject 
 {

    def main(args:Array[String])
    {

      var i:Int,j:Int; // variable declaration
      for(i <- 1 to 10; j <- 1 to 5)
      {
        println(s"($i, $j)")
      }
    }
 }
Run Code Online (Sandbox Code Playgroud)

预期结果看起来像这样

(1, 1) (1, 2) (1, 3) (1, 4) (1, 5) (2, 1) (2, 2) (2, 3) (2, 4) (2, 5) (3, 1)......

Val*_*Dia 5

您已经在某种程度上回答了您的问题,您不需要在外部初始化变量,这就足够了:

def main(args:Array[String]): Unit = {
  for(i <- 1 to 10; j <- 1 to 5) {
    println(s"($i, $j)")
  }
}
Run Code Online (Sandbox Code Playgroud)

这是一个语法糖(不完全准确):

Range(1, 11).foreach { i => // 1 to 10 produces Range(1, 11)
  Range(1, 6).foreach { j => // 1 to 5 produces Range(1, 6)
    println(s"($i, $j)")
  }
}
Run Code Online (Sandbox Code Playgroud)

简而言之,thei和 thej是关联的变量。foreach

这是有关它的文档

  • 它被称为“语法糖”,并且没有“yield”的“for”理解将糖化为“forEach”,而不是“map”。 (2认同)