发现scala里没有break和continue, 有时候实在是需要的话就要自己try catch异常,代码看起来有点蛋疼, 所以封装了一个可break和continue的foreach.

import scala.collection.TraversableLike

case class Breakable() {

  def break: Unit = throw BreakException

  def continue: Unit = throw ContinueException

  def foreach(t: TraversableLike[_, _], op: Any => Unit): Unit = {
try {
t.foreach(i => {
try {
op(i)
} catch {
case ex: Exception =>
if (ex != ContinueException) throw ex
}
})
} catch {
case ex: Exception =>
if (ex != BreakException) throw ex
}
} object BreakException extends Exception object ContinueException extends Exception }

  

使用

import com.myTest.util.Breakable

/**
* Created by Administrator on 2017/2/25 0025.
*/
object TestCode {
def main(args: Array[String]) {
val b = Breakable()
val a = List(1,2,3,4,5,6,7,8,9)
b.foreach(a, i => {
if(i == 5) b.continue
if(i == 7) b.break
println(i)
})
} }

  输出

1
2
3
4
6

Scala 封装可break和continue的foreach循环的更多相关文章

  1. java中break和continue跳出指定循环(转载)

    java中break和continue跳出指定循环 java中break和continue可以跳出指定循环,break和continue之后不加任何循环名则默认跳出其所在的循环,在其后加指定循环名,则 ...

  2. break和continue在多重循环中使用

    break和continue在多重循环中使用 关于break和continue在java中,break的作用是跳出循环,continue的作用是跳出本次循环. 我们一般情况下,这样使用: public ...

  3. Scala中实现break与continue

    Scala是函数式编程语言,因此没有直接的break与continue关键字,要实现break与continue效果,需要绕一下. 需要导入包: import util.control.Breaks. ...

  4. Java中break和continue跳出指定循环

    https://www.cnblogs.com/miys/p/b7f6a463bc58785d74a8a7fccd1f1243.html 在Java中,break和continue可以跳出指定循环,在 ...

  5. return break 和continue在for循环中的不同作用

    平时自己经常在函数里见到return,在switch语句中使用break,而continue则用的不多. 其实这三者都能在for循环中发挥不同的作用,让代码更加灵活. 先说return return是 ...

  6. break与continue,return结束循环区别

    break是跳出一层循环,continue是结束一趟循环 ,return才是结束所有层循环! 如果有多层for循环,break会跳出当前这一层,去执行最外层循环(而不是退出所有层循环);而contin ...

  7. python学习之break和continue在for循环中的使用(案例:打印出10以内的偶数,并且只要前三个偶数)

    运行程序,break是整个程序都跳出 continue则表示跳过当前一次循环,然后继续执行循环

  8. break 和 continue 语句, 以及循环中的 else 子句

    break 语句工作得如同 C 语言一样, 跳出最小的 for 或 while 循环.循环语句可以有一个 else 子句; 该子句会在以下情况被执行: 循环因迭代到列表末尾而终止 (for 语句), ...

  9. for循环 while循环 break跳出循环 continue结束本次循环 exit退出整个脚本

随机推荐

  1. JZOJ 3383. 【NOIP2013模拟】太鼓达人

    3383. [NOIP2013模拟]太鼓达人 (Standard IO) Time Limits: 1000 ms  Memory Limits: 131072 KB  Detailed Limits ...

  2. python中生成器对象和return 还有循环的区别

    python中生成器对象和return 还有循环的区别 在python中存在这么一个关键字yield,这个关键字在项目中经常被用到,比如我写一个函数不想它只返回一次就结束那我们就不能用return,因 ...

  3. python * args和** kwargs的用法

    所属网站分类: python基础 > 函数 作者:慧雅 链接: http://www.pythonheidong.com/blog/article/18/ 来源:python黑洞网 www.py ...

  4. Scrapy用pipelines把字典保存为csv格式

    import csv class MyProjectPipeline(object): # 保存为csv格式 def __init__(self): # 打开文件,指定方式为写,利用第3个参数把csv ...

  5. mysql-copy to tmp table

    今天数据后台数据反映有些迟缓后查看链接 processlist 发下好多 锁 和磁盘写入,   参考文章 : http://bbs.chinaunix.net/forum.php?mod=viewth ...

  6. python-PIL模块的使用

    PIL基本功能介绍 from PIL import Image from PIL import ImageEnhance img = Image.open(r'E:\img\f1.png') img. ...

  7. thinkpad alert键一直处于按着的状态

    就是alert 一直默认按着的,具体原因,我还没有见过. 但是解决方法很简单,crlt+alert一块按,就好了.

  8. TCP/IP网络编程之套接字类型与协议设置

    套接字与协议 如果相隔很远的两人要进行通话,必须先决定对话方式.如果一方使用电话,另一方也必须使用电话,而不是书信.可以说,电话就是两人对话的协议.协议是对话中使用的通信规则,扩展到计算机领域可整理为 ...

  9. 洛谷P1162 填涂颜色

    题目链接:https://www.luogu.org/problemnew/show/P1162 这道题是LITTLESUN写的第一道BFS哦! 对于这道题的的思路是把封闭图形外边的0标记一边,在最后 ...

  10. 56、使用android studio(v1.3.*)修改包名 (rename package name)

    一.修改包名 ①选中目录,开始构造 在弹窗中选中Rename directory 在弹窗中选中Rename package 填写新的包名,点击Refactor 如果有警告,不用管它,直接点击Do Re ...