加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 对方法返回类型的类型推断

发布时间:2020-12-16 09:47:39 所属栏目:安全 来源:网络整理
导读:为什么当方法中使用显式返回语句时,Scala无法推断方法的返回类型? 例如,为什么下面的代码编译? object Main { def who = 5 def main(args: Array[String]) = println(who)} 但下面没有。 object Main { def who = return 5 def main(args: Array[String]
为什么当方法中使用显式返回语句时,Scala无法推断方法的返回类型?

例如,为什么下面的代码编译?

object Main {
    def who = 5
    def main(args: Array[String]) = println(who)
}

但下面没有。

object Main {
    def who = return 5
    def main(args: Array[String]) = println(who)
}

解决方法

方法的返回类型是定义它的块中最后一个语句的类型,或者是在没有块的情况下定义它的表达式的类型。

当在方法中使用return时,您引入另一个语句,方法可以从该语句返回。这意味着Scala不能在找到的点确定返回的类型。相反,它必须继续直到方法结束,然后合并所有出口点以推断其类型,然后返回到每个出口点并分配??其类型。

这样做会增加编译器的复杂性,并减慢速度,因为在使用return时不必指定返回类型。在本系统中,另一方面,推断返回类型来自于Scala已经使用的有限类型推理。

所以,最后,在编译器复杂性和获得的收益之间的平衡,后者被认为不值得前者。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读