`Unit` Return 闭包类型
`Unit` Return Type of Closure
给定以下闭包:
scala> def foo(x: Int) {
| def bar(y: Int) = x + y
| bar(55)
| }
foo: (x: Int)Unit
为什么它的return类型是Unit
?我本来希望 Int
.
scala> foo(55)
scala>
您正在使用过程语法。也就是说,方法声明后没有 =
,因此该方法将 return Unit
。你想要的是:
scala> def foo(x: Int) = {
| def bar(y: Int) = x + y
| bar(55)
| }
foo: (x: Int)Int
您的示例中 bar(55)
的值被丢弃,您可以通过编译器标志捕获该值:
$ scala -Ywarn-value-discard
scala> def foo(x: Int) {
| def bar(y: Int) = x + y
| bar(55)
| }
<console>:9: warning: discarded non-Unit value
bar(55)
^
foo: (x: Int)Unit
给定以下闭包:
scala> def foo(x: Int) {
| def bar(y: Int) = x + y
| bar(55)
| }
foo: (x: Int)Unit
为什么它的return类型是Unit
?我本来希望 Int
.
scala> foo(55)
scala>
您正在使用过程语法。也就是说,方法声明后没有 =
,因此该方法将 return Unit
。你想要的是:
scala> def foo(x: Int) = {
| def bar(y: Int) = x + y
| bar(55)
| }
foo: (x: Int)Int
您的示例中 bar(55)
的值被丢弃,您可以通过编译器标志捕获该值:
$ scala -Ywarn-value-discard
scala> def foo(x: Int) {
| def bar(y: Int) = x + y
| bar(55)
| }
<console>:9: warning: discarded non-Unit value
bar(55)
^
foo: (x: Int)Unit