scala中实现break与continue功能
项目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功能相关推荐
- Scala中没有break和continue, 如何退出循环
Java是指令式风格,Scala是函数式风格. 在Scala中,应该尽量适用循环,而是应用函数的方式来处理. Scala并没有提供break和continue语句来退出循环,那么如果我们又确实要怎么办 ...
- scala中的break和continue
scala中没有像C++或者java中显示地定义break和continue这样的关键字 scala实现break: import util.control.Breaks._ breakable{// ...
- jquery each函数 break和continue功能
jquery each函数 break和continue功能 来源: 时间:2013-09-05 20:23:14 阅读数:89346 分享到:3 [导读] jquery each函数 bre ...
- JAVA中的break[标签]continue[标签]用法
原文:JAVA中的break[标签]continue[标签]用法 注意:JAVA中的标签必须放在循环之前,且中间不能有其他语句.例如:tag:for或while或do--while; 1.使用brea ...
- Java中的break和continue关键字使用总结
java中的break和continue关键字使用总结 一.作用和区别 break的作用是跳出当前循环块(for.while.do while)或程序块(switch).在循环块中的作用是跳出当前正在 ...
- c语言关于continue的题,10道c语言基础题1、C语言的跳转语句中,对于break和continue说法正确的是_______. A、contin...
10道c语言基础题1.C语言的跳转语句中,对于break和continue说法正确的是_______. A.contin 10道c语言基础题 1.C语言的跳转语句中,对于break和continue说 ...
- 嵌套循环中的break和continue使用规则
嵌套循环中的break和continue使用规则 一.嵌套循环中的break 二.嵌套循环中的continue 一.嵌套循环中的break 当break用在内部循环中,遇到break的时候,会跳出内部 ...
- Python中的break、continue、pass和循环else语句
Python中的break.continue.pass语句 一.基本介绍和一般循环格式 二.pass 三.continue 四.break 五.循环else 一.基本介绍和一般循环格式 本文是在whi ...
- 简述Python中的break和continue的区别
众所周知在Python中,break是结束整个循环体,而continue则是结束本次循环再继续循环. 但是作为一个新手的你,还是不明白它们的区别,这里用一个生动的例子说明它们的区别,如下: 1.con ...
- 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' ...
最新文章
- 织梦 PHP 字段 调用,织梦dede网站内容模型普通文章调用自定义图片字段的方法(和调用...
- python装饰器函数-python装饰器1:函数装饰器详解
- MySQL datetime类型字段的毫秒四舍五入
- spring框架学习(一)入门
- CentOS7下Hive集群搭建
- Tomcat6 Spring3 问题:严重: Error configuring application listener of class org.springframework.web.conte
- C++线程同步之事件(生产者与消费者问题)
- Eclipse异常关闭启动不了的问题
- python---Socket编程
- linux账号前有个base,安装 aconda 后Linux的终端界面前部出现(base)字样
- 这个网站不错,根据引用jar包路径查找原JAR包
- Unity-TA 成长之路(一)初识渲染管线
- java struts2教程_Struts2教程
- (九)指向一维数组和二维数组的指针(数组指针)
- 数据处理之缺失值处理
- 【图解算法使用C++】1.2 生活中的算法
- 一文弄懂:训练集、测试集、验证集
- 服务器能用系统急救箱吗,360急救(乱用360系统急救箱后果)
- Apache IoTDB 相关论文《乱序时间序列数据的写入管理》入选国际数据库顶级会议 ICDE 2022
- oracle周中的日无效,【填坑】ORA-01846 周中的日无效
热门文章
- JxBrowser之四:对Http Response Code的处理
- 阿里云成为云原生计算基金会金牌会员
- 数字签名和数字证书 流程图 (一目了然)
- CentOS 6.6安装配置LAMP服务器(Apache+PHP5+MySQL)
- python windows 远程执行bat
- openstack nova后端使用ceph rbd(增加在线迁移live_migrate和快照snapshot功能)
- [Jsoi2010]连通数
- 关于办公室打印机纸张方向的问题
- ubuntu和ok6410开发板之间架设nfs
- DedeCMS5.5 调用当前内容页TAG标记的办法