gpt4 book ai didi

scala - 在 Scala defs 中使用和不使用 "="有什么区别?

转载 作者:行者123 更新时间:2023-12-01 07:06:53 27 4
gpt4 key购买 nike

两者有什么区别def下面

def someFun(x:String) { x.length } 


def someFun(x:String) = { x.length } 

最佳答案

正如其他人已经指出的那样,前者是一种语法捷径

def someFun(x:String): Unit = { x.length }

意思是 x.length的值被丢弃,函数返回 Unit (或 () 如果您愿意)。

我想强调的是 这已被弃用 自 2013 年 10 月 29 日起( https://github.com/scala/scala/pull/3076/ ),但只有在使用 -Xfuture 编译时才会显示警告旗帜。
scala -Xfuture -deprecation

scala> def foo {}
<console>:1: warning: Procedure syntax is deprecated. Convert procedure `foo` to method by adding `: Unit =`.
def foo {}
foo: Unit

所以你 永远不应该使用 所谓的过程语法。
Martin Odersky 本人在他的 Scala Day 2013 Keynote 中指出了这一点。并且已经在 scala mailing list 中讨论过.

语法非常不一致,初学者在学习语言时遇到这个问题是很常见的。出于这个原因,它很可能会在某个时候从语言中删除。

关于scala - 在 Scala defs 中使用和不使用 "="有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24847386/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com