在 Scala 中,while
语句是一种常用的循环结构,用于重复执行一段代码块,直到指定的条件变为 false
。它的语法和功能与 Java、C 等语言中的 while
循环类似,主要用于不确定循环次数但已知循环终止条件的场景。
基本语法
scala
while (条件表达式) {
// 循环体:当条件为true时执行的代码
}
- 条件表达式 :返回布尔值(
true
或false
)。每次循环开始前会检查该条件,若为true
则执行循环体,否则退出循环。 - 循环体 :可以是单条语句或用
{}
包裹的多条语句(推荐始终用{}
包裹,增强可读性)。
执行流程
- 检查
while
后的条件表达式。 - 若条件为
true
,执行循环体中的代码,执行完毕后回到步骤 1 再次检查条件。 - 若条件为
false
,直接退出循环,继续执行后续代码。
示例 1:基本用法
打印 1 到 5 的数字:
scala
var i = 1 // 初始化循环变量
while (i <= 5) { // 循环条件:i不大于5
println(i) // 循环体:打印i
i += 1 // 更新循环变量(避免无限循环)
}
输出:
plaintext
1
2
3
4
5
示例 2:无限循环与 break
Scala 本身没有内置的 break
关键字(用于强制退出循环),但可以通过 scala.util.control.Breaks
中的 break
和 breakable
实现类似功能。
例如,找到第一个能被 7 整除的 100 以内的数:
scala
import scala.util.control.Breaks._ // 导入break相关工具
var num = 1
breakable { // 包裹可能需要break的代码块
while (num <= 100) {
if (num % 7 == 0) {
println(s"找到第一个能被7整除的数:$num")
break() // 强制退出循环
}
num += 1
}
}
输出:
plaintext
找到第一个能被7整除的数:7
注意事项
- 循环变量初始化 :
while
循环的变量需要在外部初始化(如示例中的i
或num
),否则可能导致编译错误。 - 避免无限循环 :循环体中必须包含更新循环变量的逻辑(如
i += 1
),否则若条件始终为true
,会导致无限循环。 - 与 for 循环的区别 :
while
循环更适合 "条件驱动" 的循环(不确定次数),而for
循环更适合 "迭代范围明确" 的场景(如遍历集合)。 - 返回值 :
while
循环在 Scala 中是语句 (statement),而非表达式(expression),没有返回值(返回Unit
类型,类似 Java 中的void
)。
总结
while
循环是 Scala 中控制重复执行的基础结构,语法简洁,适用于基于条件的循环场景。如需在循环中提前退出,可借助 Breaks
工具类的 break
方法实现。