scala不建议用return 作者:马育民 • 2021-06-27 21:38 • 阅读:10143 # return影响类型推断 类型推断机制会自动将最后一个表达式的类型作为返回类型,如下: ``` def f(x:Int) = x + 1 //式1.2 ``` 如果使用了 `return` ,就会破坏类型推断机制,需要显式注明返回类型,不写会报错,如下: ``` def f(x:Int):Int = return x + 1 //式1.3 ``` # 循环中的return 在scala的循环中的return实际上是通过抛异常实现的,编译后发现 ``` return value ``` 被编译成了 ``` throw new NonLocalReturnControl(key/*metadata*/, value) ``` 而NonLocalReturnControl的源码为: ``` class NonLocalReturnControl[@specialized T](val key: AnyRef, val value: T) extends ControlThrowable { final override def fillInStackTrace(): Throwable = this } ``` 可以看到 `NonLocalReturnControl` 异常继承了 `Throwable` # lambda表达式中的return 也将 `return` 编译成 `NonLocalReturnControl` 原文出处:http://malaoshi.top/show_1IX1OAnQPotp.html