带和不带 return 语句的 Scala 大括号
Scala Curly braces with and without return statement
我正在尝试了解 Scala 大括号和 with/without return 语句的基础知识。
def method(a:Int):Int = {
if(a == 10 ) 10
if(a == 11 ) {11}
if(a == 12 ) { return 12 }
if(a == 13 ) return {13}
1}
Method Call
Output
method(10)
1
method(11)
1
method(12)
12
method(13)
13
从上面我们可以看出
- 调用方法 (12) 和方法 (13) 的输出符合预期。
- 虽然调用 method(10) 和 method(11) 的输出我们看到值 returned 是 1 这令人困惑,因为 return 关键字对于 scala 不需要。
我注意到的另一件事是:
def method(a:Int) = {
if(a == 10 ) 10
if(a == 11 ) {11}
if(a == 12 ) {12}
if(a == 13 ) {13}
}
Method Call
Output
method(10)
()
method(11)
()
method(12)
()
method(13)
13
以上两种方法表述看起来很混乱。
请帮助澄清上述为什么值存在差异 returned.
提前致谢。
花括号与这段代码无关;它们都可以省略,对结果没有任何影响。
就 return
而言,除非您知道它的作用(这不是您认为的那样),否则不要使用它。
一个函数的值是函数中最后一个表达式的值,所以你需要把if
语句做成一个单一的if
/else
表达式:
def method(a: Int) =
if (a == 10) 10
else if(a == 11) 11
else if(a == 12) 12
else if(a == 13) 13
else 1
实际上,match
是此类代码的更好选择。
我正在尝试了解 Scala 大括号和 with/without return 语句的基础知识。
def method(a:Int):Int = {
if(a == 10 ) 10
if(a == 11 ) {11}
if(a == 12 ) { return 12 }
if(a == 13 ) return {13}
1}
Method Call | Output |
---|---|
method(10) | 1 |
method(11) | 1 |
method(12) | 12 |
method(13) | 13 |
从上面我们可以看出
- 调用方法 (12) 和方法 (13) 的输出符合预期。
- 虽然调用 method(10) 和 method(11) 的输出我们看到值 returned 是 1 这令人困惑,因为 return 关键字对于 scala 不需要。
我注意到的另一件事是:
def method(a:Int) = {
if(a == 10 ) 10
if(a == 11 ) {11}
if(a == 12 ) {12}
if(a == 13 ) {13}
}
Method Call | Output |
---|---|
method(10) | () |
method(11) | () |
method(12) | () |
method(13) | 13 |
以上两种方法表述看起来很混乱。 请帮助澄清上述为什么值存在差异 returned.
提前致谢。
花括号与这段代码无关;它们都可以省略,对结果没有任何影响。
就 return
而言,除非您知道它的作用(这不是您认为的那样),否则不要使用它。
一个函数的值是函数中最后一个表达式的值,所以你需要把if
语句做成一个单一的if
/else
表达式:
def method(a: Int) =
if (a == 10) 10
else if(a == 11) 11
else if(a == 12) 12
else if(a == 13) 13
else 1
实际上,match
是此类代码的更好选择。