我们可以声明变量并将其用于scala中的for循环吗

时间:2019-05-17 14:30:31

标签: scala for-comprehension

我正在尝试使用Scala中已声明的变量进行循环访问,但收到错误消息“无效的块语句”

我删除了变量声明行及其正常工作。

 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)")
      }
    }
 }

预期结果看起来像这样

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

1 个答案:

答案 0 :(得分:4)

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

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

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

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)")
  }
}

因此,ij简而言之就是来自相关foreach的变量。

这里是documentation