# Scala do...while 循環
for 循環允許您編寫一個執行指定次數的循環控制結構。
## 語法
Scala 語言中 **for** 循環的語法:
```
for( var x <- Range ){
statement(s);
}
```
以上語法中,**Range** 可以是一個數字區間表示 **i to j** ,或者 **i until j**。左箭頭 <- 用于為變量 x 賦值。
### 實例
以下是一個使用了 **i to j** 語法(包含 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
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
```
以下是一個使用了 **i until j** 語法(不包含 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
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 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( "Value of b: " + b );
}
}
}
```
執行以上代碼輸出結果為:
```
$ scalac Test.scala
$ scala Test
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 循環集合
for 循環集合的語法如下:
```
for( var x <- List ){
statement(s);
}
```
以上語法中, **List** 變量是一個集合,for 循環會迭代所有集合的元素。
### 實例
以下實例將循環數字集合。我們使用 _List()_ 來創建集合。再以后章節我們會詳細介紹集合。
```
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
value of a: 3
value of a: 4
value of a: 5
value of a: 6
```
## for 循環過濾
Scala 可以使用一個或多個 **if** 語句來過濾一些元素。
以下是在 for 循環中使用過濾器的語法。
```
for( var x <- List
if condition1; if condition2...
){
statement(s);
```
你可以使用分號(;)來為表達式添加一個或多個的過濾條件。
### 實例
以下是 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...
}yield x
```
注意大括號中用于保存變量和條件,_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
}yield a
// 輸出返回值
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 教程
- Scala 簡介
- Scala 安裝
- Scala 基礎語法
- Scala 數據類型
- Scala 變量
- Scala 訪問修飾符
- Scala 運算符
- Scala IF...ELSE 語句
- Scala 循環
- Scala while 循環
- Scala do...while 循環
- Scala do...while 循環
- Scala break 語句
- Scala 函數
- Scala 函數傳名調用(call-by-name)
- Scala 指定函數參數名
- Scala 函數 - 可變參數
- Scala 遞歸函數
- Scala 高階函數
- Scala 函數嵌套
- Scala 匿名函數
- Scala 偏應用函數
- Scala 函數柯里化(Currying)
- Scala 閉包
- Scala 字符串
- Scala 數組
- Scala Collection
- Scala List(列表)
- Scala Set(集合)
- Scala Map(映射)
- Scala 元組
- Scala Option(選項)
- Scala Iterator(迭代器)
- Scala 類和對象
- Scala Trait(特征)
- Scala 模式匹配
- Scala 正則表達式
- Scala 異常處理
- Scala 提取器(Extractor)
- Scala 文件 I/O