for
迴圈是一種重複控制結構,可以讓您有效地編寫一個需要執行特定次數的迴圈。在Scala中有各種形式的for
迴圈,如下所述 -
Scala中帶範圍for
迴圈的最簡單的語法是 -
for( var x <- Range ){
statement(s);
}
在這裡,Range
可以是數位範圍,並且表示為i
到j
。 左箭頭←
運算子被稱為生成器,因為它從一個範圍中生成單個值。
請嘗試以下範例程式來了解Scala程式設計語言中的迴圈控制語句(for
語句),參考以下範例程式碼 -
object Demo {
def main(args: Array[String]) {
var a = 0;
// for loop execution with a range
for( a <- 1 to 10){
println( "Value of a: " + a );
}
}
}
將上述程式儲存在原始檔:Demo.scala中,並使用以下命令編譯和執行此程式。
$ scalac Demo.scala
$ scala Demo
value of a: 1
value of a: 2
value of a: 3
value of a: 4
value of a: 5
value of a: 6
value of a: 7
value of a: 8
value of a: 9
value of a: 10
嘗試以下範例程式來了解Scala程式設計語言中迴圈控制語句(for
語句),迴圈列印範圍i
到j
。參考以下範例程式碼 -
object Demo {
def main(args: Array[String]) {
var a = 0;
// for loop execution with a range
for( a <- 1 until 10){
println( "Value of a: " + a );
}
}
}
將上述程式儲存原始檔在:Demo.scala 中,使用以下命令編譯和執行此程式。
$ scalac Demo.scala
$ scala Demo
value of a: 1
value of a: 2
value of a: 3
value of a: 4
value of a: 5
value of a: 6
value of a: 7
value of a: 8
value of a: 9
您可以在for
迴圈中使用由分號(;
)分隔的多個範圍,在這種情況下,迴圈將遍歷給定範圍所有可能的計算。以下是僅使用兩個範圍的範例,也可以使用兩個以上的範圍。
object Demo {
def main(args: Array[String]) {
var a = 0;
var b = 0;
// for loop execution with a range
for( a <- 1 to 3; b <- 1 to 3){
println( "Value of a: " + a );
println( "Value of b: " + b );
}
}
}
將上述程式儲存在原始檔:Demo.scala中,並使用以下命令編譯和執行此程式。
$ scalac Demo.scala
$ scala Demo
Value of a: 1
Value of b: 1
Value of a: 1
Value of b: 2
Value of a: 1
Value of b: 3
Value of a: 2
Value of b: 1
Value of a: 2
Value of b: 2
Value of a: 2
Value of b: 3
Value of a: 3
Value of b: 1
Value of a: 3
Value of b: 2
Value of a: 3
Value of b: 3
迴圈與集合的語法如下 -
for( var x <- List ){
statement(s);
}
這裡,List
變數是一個具有元素列表的集合型別,迴圈遍歷所有元素,它一次返回一個元素到x
變數中。
嘗試以下範例程式來了解一個數位集合的迴圈。 這裡我們使用List()
建立了這個集合。 我們將在另一章中學習集合。以下是在Scala程式設計語言中迴圈控制語句(for
語句)遍歷集合的範例程式碼。
object Demo {
def main(args: Array[String]) {
var a = 0;
val numList = List(1,2,3,4,5,6);
// for loop execution with a collection
for( a <- numList ){
println( "Value of a: " + a );
}
}
}
將上述程式儲存在原始檔:Demo.scala中,並使用以下命令編譯和執行此程式。
$ scalac Demo.scala
$ scala Demo
value of a: 1
value of a: 2
value of a: 3
value of a: 4
value of a: 5
value of a: 6
Scala的for
迴圈允許使用一個或多個if
語句過濾掉一些元素。以下是for
迴圈與過濾器的語法。 要為for
表示式新增多個過濾器,請使用分號(;
)分隔過濾器。
for( var x <- List
if condition1; if condition2...
){
statement(s);
}
嘗試以下範例程式來了解具有過濾器的迴圈。
範例
object Demo {
def main(args: Array[String]) {
var a = 0;
val numList = List(1,2,3,4,5,6,7,8,9,10);
// for loop execution with multiple filters
for( a <- numList
if a != 3; if a < 8 ){
println( "Value of a: " + a );
}
}
}
將上述程式儲存在原始檔:Demo.scala中,並使用以下命令編譯和執行此程式。
$ scalac Demo.scala
$ scala Demo
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...
}
yield x
注意 - 大括號已被用來保留變數和條件,並且
retVal
是一個變數,其中x
的所有值將以集合的形式儲存。
嘗試以下範例程式來了解for
迴圈與yield
的使用。
object Demo {
def main(args: Array[String]) {
var a = 0;
val numList = List(1,2,3,4,5,6,7,8,9,10);
// for loop execution with a yield
var retVal = for{ a <- numList if a != 3; if a < 8 }yield a
// Now print returned values using another loop.
for( a <- retVal){
println( "Value of a: " + a );
}
}
}
將上述程式儲存在原始檔:Demo.scala中,並使用以下命令編譯和執行此程式。
$ scalac Demo.scala
$ scala Demo
value of a: 1
value of a: 2
value of a: 4
value of a: 5
value of a: 6
value of a: 7