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

scala – 使用return语句和默认返回最后一个值有什么区别?

发布时间:2020-12-16 09:58:12 所属栏目:安全 来源:网络整理
导读:我正在学习 Scala,我注意到有关使用return语句的一些事情. 因此,显然在Scala中,如果您没有return语句,则默认返回最后一个值.哪个好.但是如果你使用return语句而没有指定返回类型,Scala说“错误:方法testMethod有return语句;需要结果类型” 这样可行 def tes
我正在学习 Scala,我注意到有关使用return语句的一些事情.

因此,显然在Scala中,如果您没有return语句,则默认返回最后一个值.哪个好.但是如果你使用return语句而没有指定返回类型,Scala说“错误:方法testMethod有return语句;需要结果类型”

这样可行

def testMethod(arg: Int) = {
    arg*2
  }

但是这给出了错误

def testMethod(arg: Int) = {
    return arg*2
  }

这让我刮伤了下巴然后走了

Mmmmmmmm… There must be a reason for that.

为什么在使用return语句时需要显式类型声明,而在让Scala返回最后一个值时不需要?我假设它们是完全相同的,并且返回语句只适用于你想在嵌套函数/条件等中返回一个值(换句话说,“return”语句会自动插入到你的最后一个值中由编译器..如果不存在方法中的任何其他地方)

但显然我错了.当然,实施中必然存在其他一些差异?

我错过了什么吗?

解决方法

如果您的方法有多个退出点,则编译器可能无法推断返回类型.从方法中获取多个退出点的唯一方法是使用多个返回. (或者一个返回加上隐式返回.)

由于规则在工作时和工作时都非常复杂,因此可能会向用户表明它有时会随机工作,有时则不然.在存在显式返回的情况下完全禁止类型推断是一个更简单的规则,即使有点限制.

(编辑:李大同)

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

    推荐文章
      热点阅读