for
迴圈是一種重複控制結構,可以讓您有效地編寫一個需要執行特定次數的迴圈。在Scala中有各種形式的for
迴圈,如下所述 -
使用範圍的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
for迴圈與篩檢程式
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
迴圈存儲返回值,或通過函數返回。為此,您可以通過關鍵字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