English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ciclo for Scala

Scala 循環

Il ciclo for in Scala ti permette di scrivere una struttura di controllo che esegue un numero specifico di iterazioni.

sintassi

Nel linguaggio Scala for La sintassi del ciclo:

for( var x <- Range ){
   statement(s);
}

Nella sintassi sopra,Range può essere un intervallo numerico rappresentato come i to j oppure i until jIl simbolo di freccia destra <- viene utilizzato per assegnare un valore alla variabile x.

線上示例

Ecco un esempio che utilizza i to j Esempio di sintassi (con j):

object Test {
   def main(args: Array[String]) {
      var a = 0;
      // for 循環
      for( a <- 1 to 10){
         println( "Value of a: " + a );
      }
   }
}

執行以上代碼輸出結果為:

$ scalac Test.scala
$ scala Test
value of a: 1
value of a: 2
valore di a: 3
value of a: 4
value of a: 5
value of a: 6
value of a: 7
valore di a: 8
valore di a: 9
valore di a: 10

Ecco un esempio che utilizza i until j Esempio di sintassi (senza j):

object Test {
   def main(args: Array[String]) {
      var a = 0;
      // for 循環
      for( a <- 1 until 10){
         println( "Value of a: " + a );
      }
   }
}

執行以上代碼輸出結果為:

$ scalac Test.scala
$ scala Test
value of a: 1
value of a: 2
valore di a: 3
value of a: 4
value of a: 5
value of a: 6
value of a: 7
valore di a: 8
valore di a: 9

in Ciclo for Puoi utilizzare il punto e virgola (;) per impostare più intervalli, che itereranno attraverso tutti i valori possibili dell'intervallo. Ecco un esempio di un ciclo for che utilizza due intervalli:

object Test {
   def main(args: Array[String]) {
      var a = 0;
      var b = 0;
      // for 循環
      for( a <- 1 to 3; b <- 1 to 3){
         println( "Value of a: " + a );
         println( "Valore di b: " + b );
      }
   }
}

執行以上代碼輸出結果為:

$ scalac Test.scala
$ scala Test
Valore di a: 1
Valore di b: 1
Valore di a: 1
Valore di b: 2
Valore di a: 1
Valore di b: 3
Valore di a: 2
Valore di b: 1
Valore di a: 2
Valore di b: 2
Valore di a: 2
Valore di b: 3
Valore di a: 3
Valore di b: 1
Valore di a: 3
Valore di b: 2
Valore di a: 3
Valore di b: 3

Ciclo for su una collezione

La sintassi per il ciclo for su una collezione è la seguente:

for( x <- List ){
   statement(s);
}

Nella sintassi sopra, List una variabile che è una collezione, e il ciclo for itererà attraverso tutti gli elementi della collezione.

線上示例

Ecco un esempio che cicla attraverso una collezione di numeri. Utilizziamo List() per creare un insieme. In capitoli successivi esploreremo più a fondo gli insiemi.

object Test {
   def main(args: Array[String]) {
      var a = 0;
      val numList = List(1,2,3,4,5,6);

      // for 循環
      for( a <- numList ){
         println( "Value of a: " + a );
      }
   }
}

執行以上代碼輸出結果為:

$ scalac Test.scala
$ scala Test
value of a: 1
value of a: 2
valore di a: 3
value of a: 4
value of a: 5
value of a: 6

filtri nel ciclo for

Scala può utilizzare una o più if espressioni per filtrare alcuni elementi.

Ecco la sintassi per l'uso di un filtro nel ciclo for:

for( var x <- List
      if condition1; if condition2...
   {
   statement(s);

Puoi utilizzare il punto e virgola (;) per aggiungere una o più condizioni di filtraggio.

線上示例

Ecco un esempio di filtraggio all'interno del ciclo for:

object Test {
   def main(args: Array[String]) {
      var a = 0;
      val numList = List(1,2,3,4,5,6,7,8,9,10);

      // for 循環
      for( a <- numList
           if a != 3; if a < 8 ){
         println( "Value of a: " + a );
      }
   }
}

執行以上代碼輸出結果為:

$ scalac Test.scala
$ scala Test
value of a: 1
value of a: 2
value of a: 4
value of a: 5
value of a: 6
value of a: 7

for 使用 yield

你可以將 for 循環的返回值作為一個變量存儲。語法格式如下:

var retVal = for{ var x <- List
     if condition1; if condition2...
}

注意大括號中用於保存變量和條件,retVal 是變量,循環中的 yield 將當前的元素記錄下來,保存在集合中,循環結束後將返回該集合。

線上示例

以下示例演示了 for 循環中使用 yield:

object Test {
   def main(args: Array[String]) {
      var a = 0;
      val numList = List(1,2,3,4,5,6,7,8,9,10);

      // for 循環
      var retVal = for{ a <- numList
                        if a != 3; if a < 8
                      }

      // 輸出返回值
      for( a <- retVal){
         println( "Value of a: " + a );
      }
   }
}

執行以上代碼輸出結果為:

$ scalac Test.scala
$ scala Test
value of a: 1
value of a: 2
value of a: 4
value of a: 5
value of a: 6
value of a: 7

Scala 循環