Scala:没有continue,break怎么办?

scala自身是没有continue,break这两个语法关键词的。

但是实际上我们还是很希望有这两个语法,那么我们是否可以自己实现呢?

  • 从官网上搜索,我们可以找到一下关于break的类相关资料:

Breaks extends AnyRef

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.

  • continue测试:
import util.control.Breaks._

/**
  * Created by Administrator on 2016/11/15.
  */
object MyMain {
  def main(args: Array[String]): Unit = {
    println("Hello World")

    for (index <- 1 to 10) {
      breakable {
        if (index == 6) {
          println("the index is :"+index)
          break()
        }
        else {
          println("hello" + index)
        }
      }
    }
  }
}

输出结果
Hello World
hello1
hello2
hello3
hello4
hello5
the index is :6
hello7
hello8
hello9
hello10

Process finished with exit code 0

  • break测试:
import util.control.Breaks._

/**
  * Created by Administrator on 2016/11/15.
  */
object MyMain {
  def main(args: Array[String]): Unit = {
    println("Hello World")
    breakable {
      for (index <- 1 to 10) {
        if (index == 6) {
          println("the index is :" + index)
          break()
        }
        else {
          println("hello" + index)
        }
      }
    }
  }
}

或者

import util.control.Breaks._

/**
  * Created by Administrator on 2016/11/15.
  */
object MyMain {
  def main(args: Array[String]): Unit = {
    println("Hello World")
    for (index <- 1 to 10) {
      if (index == 6) {
        println("the index is :" + index)
        break
      }
      else {
        println("hello" + index)
      }
    }
  }
}

输出结果

Hello World
hello1
hello2
hello3
hello4
hello5
the index is :6

参考资料:scala break & continue http://www.cnblogs.com/rollenholt/p/4119105.html

时间: 2024-12-14 14:33:43

Scala:没有continue,break怎么办?的相关文章

Scala 封装可break和continue的foreach循环

发现scala里没有break和continue, 有时候实在是需要的话就要自己try catch异常,代码看起来有点蛋疼, 所以封装了一个可break和continue的foreach. import scala.collection.TraversableLike case class Breakable() { def break: Unit = throw new BreakException def continue: Unit = throw new ContinueExceptio

c:走出循环的几种方法之continue,break,goto,return

走出循环结构的几种方法:continue,break,goto,return 一:continue结束本次循环,直接进入下一次循环 int main(int argc, const char * argv[]) { for (int j = 0; j<10; j++) { if (j>5) { continue; } printf("%d\n",j); } return 0; } 打印结果: 012345 二:break结束整个循环结构. int main(int argc

js补充小知识点(continue,break,ruturn)

1.continue,break,ruturn eg:1-100的和 $(function () { $("#hello").click(function () { var iNum = 0; for (var i = 1; i < 101; i++) { iNum += i; } alert(iNum); }); }); 结果为:5050 换为break,查看结果 $(function () { $("#hello").click(function () {

dead loop、continue &amp; break、while...else语句

Dead loop 有种循环叫死循环,已经触发就会永远运行下去. continue & break 如果在循环过程中,因为某些原因,你不想继续循环了,就要用到break 或 continue语句. break用于完全结束一个循环,跳出循环体执行循环后面的语句: continue和break有点类似,区别在于continue只是跳出(终止)本次循环,接着还执行后面的循环,break则完全终止循环. break定义示例: 源码: 运行结果: continue定义示例1: continue示例2: 源

3-21 lambda,try,continue&amp;break, copy,threading

#此处当作是自己的笔记的地方,在def 和lambda 的比较中,lambda在一些方面是可以代替掉def的,def 是定义之后第二行是方法,而lambda 则可以用一行来处理这种情况 eg: def fun1(x,y): return x+y fun1(2,3) fun2=lambda x,y : x+y fun2(2,3) #此处lambda的应用范围就是在定义简单的函数的时候直接使用使得需要两行定义的函数只有需要定义一行. #something about my study and my

python基础;if else;for;while 分支处理.continue,break

if else 语法: if <判断条件1>: 分支1 elif <判断条件2>: 分支2 else: 分支3 eg: 1 age = int(input("inpute you age")) 2 if age >= 18: 3 print("you are a person") 4 elif 6 <= age: 5 print("you are a child") 6 else: 7 print("

第五节:python continue break的用法

for i in range(1,100):   if i==50:     print 'i have print 50'     continue  print i 此处的print i 和 if i==50:属于同级,执行的都是上级for.  print 'i have print 50' 和continue属于同级. continue 为跳出本次循环,break为跳出整个循环.两者只能在循环中使用.

《javascript高级程序设计》笔记:continue / break 和 return

return语句的几个特点:(1)return语句应用范围只能出现在函数体内,出现在代码中的其他任何地方都会造成语法错误(2)return语句就是用于指定函数返回的值(3)return false 能够阻止提交表单或者继续执行下面的代码,通俗的来说就是阻止执行默认的行为 return的例子1: function returnFn() { for(var i = 0; i < 10; i++) { if(i == 5) { return i; } console.log(i); } } conso

5.25 continue break for while

#_author:"ljk"#date: 2017/5/25 # 1.break,中断当前循环# for i in range(10): #打印5-9# if i < 5:# continue #跳出当前循环# print(i)# for j in range(10):# print("layer2",j)# if j == 6:# break #2 break 一次只能中断一层循环# for i in range(10): #打印5-9# if i <

Java中goto,continue,break

goto:在Java中goto仍是保留字,但并未在语言中使用它:Java没有goto. 保留字的定义:       保留字(reserved word),指在高级语言中已经定义过的字,使用者不能再将这些字作为变量名或过程名使用.       保留字包括关键字和未使用的保留字.关键字则指在语言中有特定含义,成为语法中一部分的那些字.在一些语言中,一些保留字可能并没有应用于当前的语法中,这就成了保留字与关键字的区别.一般出现这种情况可能是由于考虑扩展性.例如,Javascript有一些未来保留字,如