scala continue,break 详解

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

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

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

Breaks extends AnyRef

A class that can be instantiated for the break control abstraction. Example usage:

1
2
3
4
5
6
7
8
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测试:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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测试:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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)
         }
       }
     }
   }
}

 或者

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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)