前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Scala-4.控制结构-break和continue

Scala-4.控制结构-break和continue

作者头像
悠扬前奏
发布2019-07-08 00:46:41
1.2K0
发布2019-07-08 00:46:41
举报
文章被收录于专栏:悠扬前奏的博客

Scala中没有break和continue这两个关键字,而是以scala.util.control.Breaks类的工具形式提供的。并且需要加上breakable方法来修饰语句块:

代码语言:javascript
复制
import util.control.Breaks._

object BreakAndContinueDemo extends App {
  println("\n=== BREAM EXAMPLE ===")
  breakable {
    for (i <- 1 to 10) {
      println(i)
      if (i > 4) break
    }
  }

  println("\n=== CONTINUE EXAMPLE ===")
  val searchMe = "peter piper picked a peck of pickled peppers"
  var numPs = 0
  for (i <- 0 until searchMe.length) {
    breakable {
      if (searchMe.charAt(i) != 'p') {
        break
      } else {
        numPs += 1
      }
    }
  }
  println("Found" + numPs + "p's in the string.")
}

以上代码的执行结果是:

代码语言:javascript
复制
=== BREAM EXAMPLE ===
1
2
3
4
5

=== CONTINUE EXAMPLE ===
Found9p's in the string.

实际上执行到break方法时,一个异常被抛出,for循环结束。breakable方法会捕获异常,控制流继续执行被打断的代码块后面的其他代码。 continue方法类似,只是在捕获异常之后伴随下一个元素继续执行。

Scala中Continue的快捷用法

下面的代码和例子中的效果一样。

代码语言:javascript
复制
val length = searchMe.count(_ == 'p') 
嵌套使用Break

可以通过标记break语句的方式创建多个嵌套的break:

代码语言:javascript
复制
object LabeledBreakDemo extends App {

  import scala.util.control._

  val Inner = new Breaks
  val Outer = new Breaks

  Outer.breakable {
    for (i <- 1 to 5) {
      Inner.breakable({
        for (j <- 'a' to 'e') {
          if (i == 1 && j == 'c') Inner.break() else println(s"i: $i, j: $j")
          if (i == 2 && j == 'b') Outer.break()
        }
      })
    }
  }

如果第一个if条件被满足,抛出的异常会被Inner.breakable捕获,外层的继续,如果第二个if条件被处罚,控制流交给Outer.breakable,这时两个循环都退出。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.07.05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Scala中Continue的快捷用法
  • 嵌套使用Break
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档