мы можем объявить переменные и использовать их для цикла в Scala - PullRequest
0 голосов
/ 17 мая 2019

Пытаюсь перебрать цикл, используя уже объявленные переменные в 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 Ответ

4 голосов
/ 17 мая 2019

Вы уже ответили на свой вопрос в некоторой степени, вам не нужно инициализировать переменную извне, этого достаточно:

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

Таким образом, i и j - это переменная из связанного foreach в двух словах.

Вот документация об этом.

...