You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

空体while循环优化咨询:如何优雅调用布尔方法至返回false

问题描述

我编写了一行调用返回布尔值方法的代码,希望持续调用该方法直到它返回false。为此我使用了一个while循环,但由于所有操作都在作为循环条件的方法内完成,循环无需内容体,代码如下:

while (grid.sandGoesDown(500, 0)) {

}

请问是否有更优雅的实现方式?我设想类似repeatUntil(method, condition)这样的形式。

实现方案
  • 封装通用工具方法:完全贴合你想要的repeatUntil形式,自己写一个工具方法复用:
// 通用重复执行工具,直到传入的方法返回false
public static void repeatUntil(Supplier<Boolean> action) {
    while (action.get()) {
        // 空体,业务逻辑已在action中实现
    }
}

调用时直接用Lambda表达式传入目标方法:

repeatUntil(() -> grid.sandGoesDown(500, 0));

这种方式复用性拉满,后续其他类似场景直接调用即可。

  • 优化原循环的可读性:如果不想额外写工具类,给空循环体加个清晰的注释,让代码意图一目了然:
// 持续调用sandGoesDown,直到方法返回false
while (grid.sandGoesDown(500, 0)) {
    // 无额外逻辑,所有操作已在循环条件的方法内完成
}

这种方式零额外代码,只是可读性比工具方法稍弱。

  • do-while变种(谨慎使用):如果业务允许先执行一次方法再判断,可以用do-while,但注意这和原while的执行逻辑(先判断再执行)有差异,仅适用于不需要首次判断的场景:
do {
    // 逻辑已在方法内完成
} while (grid.sandGoesDown(500, 0));

内容的提问来源于stack exchange,提问作者Quentin M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 15:05:24