scala--for循环:break

在scala里,是没有break关键字的,但有时候我们想在循环里跳出,改怎么办呢?很简单,自己实现一个break功能。主要是通过捕获异常实现的

首先,为了更好的控制,定义一个异常类:

    /*简单起见,只继承Exception*/
    class BreakException() extends Exception

然后定义break“关键字”,不是真的关键字,只是一个函数而已:

    /*如果一个方法抛出异常,则异常的返回值就是Nothing*/
    def break(): Nothing = { throw new BreakException() }

    def breakable (fn :  => Unit): Unit = {
        try {
            fn
        } catch {
            case ex: BreakException => println("catch my exception. do nothing: " + ex.toString)
            case ex: Exception => println("other exception: " + ex.toString)
        }
    }

使用就很简单了:

    def run = {
        breakable {
            for (i <- 0 until 10) {
                if (i == 5) break
                else println(i)
            }
        }
    }

不得不说,scala很强大,很多想不到的功能都可以实现,总之,都归功于函数式编程。

你可能感兴趣的:(scala--for循环:break)