Scala的while语句循环

在 Scala 中,while 语句是一种常用的循环结构,用于重复执行一段代码块,直到指定的条件变为 false。它的语法和功能与 Java、C 等语言中的 while 循环类似,主要用于不确定循环次数但已知循环终止条件的场景。

基本语法

scala 复制代码
while (条件表达式) {
  // 循环体:当条件为true时执行的代码
}
  • 条件表达式 :返回布尔值(truefalse)。每次循环开始前会检查该条件,若为 true 则执行循环体,否则退出循环。
  • 循环体 :可以是单条语句或用 {} 包裹的多条语句(推荐始终用 {} 包裹,增强可读性)。

执行流程

  1. 检查 while 后的条件表达式。
  2. 若条件为 true,执行循环体中的代码,执行完毕后回到步骤 1 再次检查条件。
  3. 若条件为 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 中的 breakbreakable 实现类似功能。

例如,找到第一个能被 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

注意事项

  1. 循环变量初始化while 循环的变量需要在外部初始化(如示例中的 inum),否则可能导致编译错误。
  2. 避免无限循环 :循环体中必须包含更新循环变量的逻辑(如 i += 1),否则若条件始终为 true,会导致无限循环。
  3. 与 for 循环的区别while 循环更适合 "条件驱动" 的循环(不确定次数),而 for 循环更适合 "迭代范围明确" 的场景(如遍历集合)。
  4. 返回值while 循环在 Scala 中是语句 (statement),而非表达式(expression),没有返回值(返回 Unit 类型,类似 Java 中的 void)。

总结

while 循环是 Scala 中控制重复执行的基础结构,语法简洁,适用于基于条件的循环场景。如需在循环中提前退出,可借助 Breaks 工具类的 break 方法实现。

相关推荐
桦说编程2 小时前
并发编程中的等待-通知模式:从 wait/notify 到 Guava Monitor
后端
用户938515635074 小时前
工厂模式与 Nest.js 核心思想 —— 从蜜雪冰城到企业级架构
后端·设计模式·nestjs
用户938515635074 小时前
实战 Todo CRUD —— 从路由到异常,手写一个完整模块
后端·typescript·nestjs
GetcharZp4 小时前
Qdrant 向量数据库 Golang 实战指南:从零构建高性能检索应用
后端
hsfxuebao5 小时前
OpenSpec 完整使用流程笔记 (SDD)
后端
唐青枫5 小时前
别把 struct 只当成数据盒子:Zig 结构体从入门到实战
后端
why技术5 小时前
AI 写的文章,可能都带着手敲一遍都去不掉的“隐形水印”。
前端·人工智能·后端
北斗落凡尘6 小时前
LangGraph 入门实战(9)--中断
后端·langchain
CodeSheep6 小时前
又一个华为天才少年,离职了!
前端·后端·程序员
IT_陈寒7 小时前
Vue的双向绑定把我坑惨了,原来这个场景不能用
前端·人工智能·后端