带和不带 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

从上面我们可以看出

我注意到的另一件事是:

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 是此类代码的更好选择。