Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
scala-带和不带的def=_Scala_Function - Fatal编程技术网

scala-带和不带的def=

scala-带和不带的def=,scala,function,Scala,Function,以下两种方法有区别吗 scala> def foo() = {} foo: ()Unit scala> def foo() {} foo: ()Unit 他们似乎是一样的。 这两者都得到支持有什么原因吗 def foo() {} 等同于并强制执行 def foo(): Unit = {} 当 将应用类型推断从方法体确定结果类型 因此,对于前两个选项,Unit是唯一允许的返回类型,而在第三个选项中,返回类型取决于实现 等同于并强制执行 def foo(): Unit = {}

以下两种方法有区别吗

scala> def foo() = {}
foo: ()Unit

scala> def foo() {}
foo: ()Unit
他们似乎是一样的。 这两者都得到支持有什么原因吗

def foo() {}
等同于并强制执行

def foo(): Unit = {}

将应用类型推断从方法体确定结果类型

因此,对于前两个选项,Unit是唯一允许的返回类型,而在第三个选项中,返回类型取决于实现

等同于并强制执行

def foo(): Unit = {}

将应用类型推断从方法体确定结果类型


因此,对于前两个选项,Unit是唯一允许的返回类型,而在第三个选项中,返回类型取决于实现。

Related:后一种形式只能用于定义返回Unit的函数。第一种形式用于所有其他函数。相关:相关:后一种形式只能用于定义返回单元的函数。第一个用于所有其他函数。相关:啊,精彩的解释。我不知道可以推断返回类型,谢谢!这是Scala语言的许多令人敬畏的东西之一:-值得注意的是,对于方法/函数,至少对于公共API的方法/函数,返回类型仍然应该显示出来,以便对代码/API的读者友好。@SeanConolly:的确,在大多数情况下,如果返回类型是直接递归的,则编译器无法推断返回类型。但依赖它往往不是一个好主意。方法不依赖类型推断有两个原因:1显式结果类型具有文档值;2推断类型可能比您喜欢的更窄或更复杂。2的一个示例是返回HashMap。您可能不希望您的API契约指定这样一个特定的类型,并且没有显式的返回类型注释,您将被绑定到该具体类型,以免做出破坏性的更改。好的观点@RandallSchulz,干杯!啊,太棒了。我不知道可以推断返回类型,谢谢!这是Scala语言的许多令人敬畏的东西之一:-值得注意的是,对于方法/函数,至少对于公共API的方法/函数,返回类型仍然应该显示出来,以便对代码/API的读者友好。@SeanConolly:的确,在大多数情况下,如果返回类型是直接递归的,则编译器无法推断返回类型。但依赖它往往不是一个好主意。方法不依赖类型推断有两个原因:1显式结果类型具有文档值;2推断类型可能比您喜欢的更窄或更复杂。2的一个示例是返回HashMap。您可能不希望您的API契约指定这样一个特定的类型,并且没有显式的返回类型注释,您将被绑定到该具体类型,以免做出破坏性的更改。好的观点@RandallSchulz,干杯!