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 } 这让我刮伤了下巴然后走了
为什么在使用return语句时需要显式类型声明,而在让Scala返回最后一个值时不需要?我假设它们是完全相同的,并且返回语句只适用于你想在嵌套函数/条件等中返回一个值(换句话说,“return”语句会自动插入到你的最后一个值中由编译器..如果不存在方法中的任何其他地方) 但显然我错了.当然,实施中必然存在其他一些差异? 我错过了什么吗? 解决方法
如果您的方法有多个退出点,则编译器可能无法推断返回类型.从方法中获取多个退出点的唯一方法是使用多个返回. (或者一个返回加上隐式返回.)
由于规则在工作时和工作时都非常复杂,因此可能会向用户表明它有时会随机工作,有时则不然.在存在显式返回的情况下完全禁止类型推断是一个更简单的规则,即使有点限制. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- WEBService取得客户端/服务器IP/DNS的方法
- bootstrap_第一次使用
- 检查是否在vimrc中安装了病原体
- twitter-bootstrap – 使用bootstrap将单选按钮设为必填字段
- twitter-bootstrap – Bootstrap 4折叠导航栏背景颜色
- 如何在ADB shell和Android应用之间来回发送消息?
- scala – 如果使用cats IO选项为None,如何在for-comprehens
- Scala列出了存在类型:`map {case t => …}`works,`map {t
- angularjs – Angular UI Bootstrap Alert Closable Issue
- Angular JS做一个字数限制和提示