Java是指令式风格,Scala是函数式风格。

在Scala中,应该尽量适用循环,而是应用函数的方式来处理。

Scala并没有提供break和continue语句来退出循环,那么如果我们又确实要怎么办呢,有如下几个选项:

1. 使用Boolean型的控制变量。

2. 使用嵌套函数,从函数当中return

3. 使用Breaks对象中的break方法(这里的控制权转移是通过抛出和捕获异常完成的,尽量避免使用这套机制)

4. 递归函数重写循环

import util.control.Breaks._object LoopOps {def main(args: Array[String]) = {val list = List(21, 214, -4352, 65436, 7534)breakTest1(list)breakTest2(list)contniueTest1(list)continueTest2(list)continueTest3(list)}def breakTest1(list: List[Int]) = {println("breakable语句块来实现break操作")breakable {for (elem <- list)if (elem < 0) break else println(elem)}}def breakTest2(list: List[Int]) = {println("增加一个boolean变量作为for循环守卫,while循环同理")var foundMinus = falsefor (elem <- list if !foundMinus) {if (elem < 0) foundMinus = true else println(elem)}}def contniueTest1(list: List[Int]) = {println("breakable语句块来实现continue操作")for (elem <- list)breakable {if (elem < 0) break else println(elem)}}def continueTest2(list: List[Int]) = {println("if else控制来实现continue操作")for (elem <- list)if (elem < 0) () else println(elem)}def continueTest3(list: List[Int]) = {println("递归函数重写循环")def next(i: Int): Unit = {if (i >= list.size) Unitelse if (list(i) < 0) next(i + 1)else println(list(i)); next(i + 1)}next(0)}
}

转载于:https://www.cnblogs.com/r0n9/p/6733909.html

Scala中没有break和continue, 如何退出循环相关推荐

  1. scala中的break和continue

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

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

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

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

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

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

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

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

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

  6. C语言 while语句中的break与continue

    break和continue都是用来结束循环的,但是二者还是有区别的.具体请看下文: break使用示例 上述代码可以看出循环中只要遇到break,就停止后期的所有的循环,直接终止循环. 所以whil ...

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

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

  8. break和continue语句、循环嵌套

    1.break和continue语句 break语句除了可以用在switch语句中,还可以用在循环体中.在循环体中遇见break语句,立即结束循环,跳到循环体外,执行循环结构后面的语句.一般形式为: ...

  9. switch语句中的break与continue

    break语句可用于从for.while与do-while等循环中提前退出.在多层循环中break实现从最内层循环退出到上一级循环,如果要实现一次跳出两层或多层循环需要使用goto. continue ...

最新文章

  1. 图结构练习——BFS——从起始点到目标点的最短步数
  2. mysql的dockerfile_Dockerfile构建MySQL
  3. Maven实战读书笔记(六):Maven灵活构建
  4. 消费者关注的 Win8 问题汇总(中)
  5. nofollow标签_如何Nofollow外链
  6. 轻量级RTSP服务存在的意义
  7. hadoop yarn 获取日志_Hadoop YARN配置参数剖析(2)—权限与日志聚集相关参数
  8. Jvm工作原理学习笔记(转)
  9. 文件源路径太长无法删除
  10. SQL 2005/2008质疑修复
  11. web前端的初学一周
  12. 大学英语(第四册)复习(原文及全文翻译)——Unit 5 - TO LIE OR NOT TOLIE—THE DOCTOR‘S DILEMMA(撒谎还是不撒谎——医生的难题)
  13. Java实现QQ邮件群发功能
  14. 《数据出境安全评估办法》将正式施行,聊聊数据出境安全合规那些事
  15. 基于面向对象的模拟人生游戏类
  16. 宏基因组网络分析工具MetagenoNets
  17. MySQL报错 1273 - Unknown collation: ‘utf8mb4_0900_ai_ci‘
  18. 燃气热水器和电热水器哪个好 燃气热水器和电热水器的优缺点
  19. 基于SpringBoot+vue的前后端分离学生成绩管理系统的设计与实现--毕业设计
  20. 运行日志Log文件c++实现

热门文章

  1. JQuery EasyUI datagrid 复杂表头处理
  2. 就mysql command line client刚输入密码立马闪一下退出问题的解决方案
  3. 群晖 root_群晖多人协作开发
  4. sql将一列拆分为多列_SQL的弱点(2):不支持从所有列中去除某列
  5. flowable工作流_【程序源代码】Springboot开源工作流开发框架
  6. 远程重启h3c路由器_【一号机房】教你怎么配置H3C路由器NAT及远程telnet
  7. winform打开cad图纸_CAD打开图纸的方法汇总
  8. ssh mysql环境搭建_搭建一个MySQL高可用架构集群环境
  9. 11、计算机图形学——几何(贝塞尔曲线与曲面)
  10. MATLAB表白利器