Scala 中如何优雅地实现 break 操作

用户头像
吴慧民
关注
发布于: 2020 年 07 月 09 日
Scala中如何优雅地实现break操作

在开发过程中,经常会遇到在迭代的过程中,当满足特定条件时,终止迭代的情况,Java提供了break关键字,可以很方便地实现这一逻辑;但是Scala中并没有提供break关键字,那要如何实现呢?通过查阅相关文档,整理出如下两种解决方案



  1. 借助Scala 中的Break类

object LoopBreakSuite {
def main(args: Array[String]): Unit = {
import scala.util.control._
val loop = new Breaks
var sum = 0
loop.breakable {
(0 to 1000).foreach {
i =>
sum += i
println(i)
if (sum > 1000)
loop.break
}
}
println(sum)
}
}



  1. 借助Iterator object中提供的takeWhile方法

object LoopBreakSuite {
def main(args: Array[String]): Unit = {
var sum = 0
(0 to 1000).iterator.takeWhile(_ => sum < 1000).foreach {
i =>
sum += i
println(i)
}
println(sum)
}
}



对比上述两种解决方案,可以看出,方法2的实现更加简洁。

虽然,Functional Programming强调要尽可能地避免使用var型变量,但是在书写业务逻辑的时候难免会出现各种各样地判断逻辑,需要搭配var型变量才能方便实现。

发布于: 2020 年 07 月 09 日 阅读数: 39
用户头像

吴慧民

关注

还未添加个人签名 2017.10.20 加入

还未添加个人简介

评论

发布
暂无评论
Scala中如何优雅地实现break操作