项目github地址:bitcarmanlee easy-algorithm-interview-and-practice
欢迎大家star,留言,一起学习进步

在别的编码语言中,break与continue两种控制语句是非常常见的用法,一般也有对应的关键字。但是在scala中,没有专门的break与continue关键字。那怎么在循环中实现break与continue功能呢?

1.实现break功能

package com.xiaomi.leilei.test1import scala.util.control.Breaks._/*** Created by wanglei on 17/8/11.*/
object breakdemo {def breaktest() = {val arr = Array(1, 2, 3, 4, 5, 6)breakable {arr.foreach { x =>if (x > 3) breakelse println(x)}}}def main(args: Array[String]): Unit = {breaktest()}}

最后的输出结果为:

1
2
3

2.实现continue功能

package com.xiaomi.leilei.test1import scala.util.control.Breaks._/*** Created by wanglei on 17/8/11.*/
object breakdemo {def continuetest() = {val arr = Array(1, 2, 3, 4, 5, 6)arr.foreach {x => breakable {if(x == 4) break()else println(x)}}}def main(args: Array[String]): Unit = {continuetest()}}

通过上面的代码不难发现,实现break与continue功能,都需要util.control.Breaks._类的辅助。不同的是,将整个循环的逻辑放在breakable方法中,在需要真正跳出循环的时候使用break方法,这样达到了跳出整个循环的目的。而continue功能是将breakable放在循环内,这样可以实现结束本次循环的目的而不是结束整个循环。

3.Breaks的部分源码

package scala
package util.control/** A class that can be instantiated for the break control abstraction.*  Example usage:*  {{{*  val mybreaks = new Breaks*  import mybreaks.{break, breakable}**  breakable {*    for (...) {*      if (...) break()*    }*  }*  }}}*  Calls to break from one instantiation of `Breaks` will never*  target breakable objects of some other instantiation.*/

如果翻译过来就是说:
1.Breaks是一个可以实例化为中断控制抽象的类。
2.Breaks的实例对象永远不用破坏要被中断对象的实例。
3.注释中给出了明确的要实现break功能的代码样式。

scala中实现break与continue功能相关推荐

  1. Scala中没有break和continue, 如何退出循环

    Java是指令式风格,Scala是函数式风格. 在Scala中,应该尽量适用循环,而是应用函数的方式来处理. Scala并没有提供break和continue语句来退出循环,那么如果我们又确实要怎么办 ...

  2. scala中的break和continue

    scala中没有像C++或者java中显示地定义break和continue这样的关键字 scala实现break: import util.control.Breaks._ breakable{// ...

  3. jquery each函数 break和continue功能

    jquery each函数 break和continue功能 来源:   时间:2013-09-05 20:23:14   阅读数:89346 分享到:3 [导读] jquery each函数 bre ...

  4. JAVA中的break[标签]continue[标签]用法

    原文:JAVA中的break[标签]continue[标签]用法 注意:JAVA中的标签必须放在循环之前,且中间不能有其他语句.例如:tag:for或while或do--while; 1.使用brea ...

  5. Java中的break和continue关键字使用总结

    java中的break和continue关键字使用总结 一.作用和区别 break的作用是跳出当前循环块(for.while.do while)或程序块(switch).在循环块中的作用是跳出当前正在 ...

  6. c语言关于continue的题,10道c语言基础题1、C语言的跳转语句中,对于break和continue说法正确的是_______. A、contin...

    10道c语言基础题1.C语言的跳转语句中,对于break和continue说法正确的是_______. A.contin 10道c语言基础题 1.C语言的跳转语句中,对于break和continue说 ...

  7. 嵌套循环中的break和continue使用规则

    嵌套循环中的break和continue使用规则 一.嵌套循环中的break 二.嵌套循环中的continue 一.嵌套循环中的break 当break用在内部循环中,遇到break的时候,会跳出内部 ...

  8. Python中的break、continue、pass和循环else语句

    Python中的break.continue.pass语句 一.基本介绍和一般循环格式 二.pass 三.continue 四.break 五.循环else 一.基本介绍和一般循环格式 本文是在whi ...

  9. 简述Python中的break和continue的区别

    众所周知在Python中,break是结束整个循环体,而continue则是结束本次循环再继续循环. 但是作为一个新手的你,还是不明白它们的区别,这里用一个生动的例子说明它们的区别,如下: 1.con ...

  10. c语言中的switch语句中的break和continue的作用

    #include <stdio.h>int main() {int k;char c;for(k=1,c='A'; c < 'F'; k++){switch(++c){case'A' ...

最新文章

  1. 织梦 PHP 字段 调用,织梦dede网站内容模型普通文章调用自定义图片字段的方法(和调用...
  2. python装饰器函数-python装饰器1:函数装饰器详解
  3. MySQL datetime类型字段的毫秒四舍五入
  4. spring框架学习(一)入门
  5. CentOS7下Hive集群搭建
  6. Tomcat6 Spring3 问题:严重: Error configuring application listener of class org.springframework.web.conte
  7. C++线程同步之事件(生产者与消费者问题)
  8. Eclipse异常关闭启动不了的问题
  9. python---Socket编程
  10. linux账号前有个base,安装 aconda 后Linux的终端界面前部出现(base)字样
  11. 这个网站不错,根据引用jar包路径查找原JAR包
  12. Unity-TA 成长之路(一)初识渲染管线
  13. java struts2教程_Struts2教程
  14. (九)指向一维数组和二维数组的指针(数组指针)
  15. 数据处理之缺失值处理
  16. 【图解算法使用C++】1.2 生活中的算法
  17. 一文弄懂:训练集、测试集、验证集
  18. 服务器能用系统急救箱吗,360急救(乱用360系统急救箱后果)
  19. Apache IoTDB 相关论文《乱序时间序列数据的写入管理》入选国际数据库顶级会议 ICDE 2022
  20. oracle周中的日无效,【填坑】ORA-01846 周中的日无效

热门文章

  1. JxBrowser之四:对Http Response Code的处理
  2. 阿里云成为云原生计算基金会金牌会员
  3. 数字签名和数字证书 流程图 (一目了然)
  4. CentOS 6.6安装配置LAMP服务器(Apache+PHP5+MySQL)
  5. python windows 远程执行bat
  6. openstack nova后端使用ceph rbd(增加在线迁移live_migrate和快照snapshot功能)
  7. [Jsoi2010]连通数
  8. 关于办公室打印机纸张方向的问题
  9. ubuntu和ok6410开发板之间架设nfs
  10. DedeCMS5.5 调用当前内容页TAG标记的办法