// 定义一个枚举来表示结果状态
enum LoopResult {
Success,
BreakEarly,
}
// 定义接收闭包的函数
fn execute_loop_with_closure(closure: impl FnMut() -> bool) -> LoopResult {
loop {
if let false = closure() {
break LoopResult::BreakEarly;
}
}
LoopResult::Success
}
在闭包环境下 break
和 continue
关键字的作用域及行为特点:
break
关键字:
- 作用域:在闭包内部使用
break
关键字时,它会跳出闭包所在的最内层循环结构。在上述例子中,如果闭包返回 false
,break
会跳出 execute_loop_with_closure
函数内部的 loop
循环。
- 行为特点:一旦执行
break
,循环立即终止,控制权转移到循环之后的代码(如果有)。在这个函数里,break
带有返回值 LoopResult::BreakEarly
,用于表示循环是因 break
提前结束的。
continue
关键字:
- 作用域:同样在闭包内部,
continue
关键字影响的是闭包所在的最内层循环。
- 行为特点:当
continue
被执行时,它会立即停止当前循环迭代的剩余部分,并开始下一次迭代。例如,如果在闭包中有一些计算逻辑和 continue
,当 continue
执行时,后续计算逻辑将不会执行,直接进入下一次循环。