Scala匹配表达式

时间:2020-01-09 10:47:19  来源:igfitidea点击:

Scala的match表达式可用于在一系列选项之间进行选择,就像多个if语句一样。 Scala的匹配与Java的switch语句的工作原理类似,尽管并不完全相同。这是一个简单的示例:

var myVar = "theValue";

myVar match {
   case "someValue"   => println(myVar + " 1");
   case "thisValue"   => println(myVar + " 2");
   case "theValue"    => println(myVar + " 3");
   case "doubleValue" => println(myVar + " 4");
}

该匹配表达式将myVar变量的值与四个case语句中的每个值进行比较。如果" myVar"的值与这些值中的任何一个匹配,那么将执行匹配的case语句之后的代码。

与Java的不同之处在于,每种情况后都没有break语句,但是case语句不会像Java中那样"掉线"。换句话说,在Java中,如果值与case语句匹配,则随后的所有case语句也将被执行,直到case语句之一列出了break为止。

与Java的switch语句的另一个区别是,Scala可以匹配int或者long之外的其他值。 Scala可以在许多其他方面进行匹配。在上面的示例中,使用了字符串。

匹配表达式可以返回值

与Java的switch语句的另一个不同之处是Scala match表达式可以返回一个值。方法如下:

var myVar = "theValue";

var myResult =
    myVar match {
       case "someValue"   => myVar + " A";
       case "thisValue"   => myVar + " B";
       case "theValue"    => myVar + " C";
       case "doubleValue" => myVar + " D";
    }
println(myResult);

注意如何将变量" myResult"设置为等于匹配表达式的值。匹配表达式返回匹配case语句中分配给它的任何值。在此示例中,match表达式将返回myVar +" C"