# 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