在Java中,我经常发现自己在条件的每个分支中分配多个最终变量,如下所示:
final _ x;
final _ y;
if (_) {
x = _;
y = _;
} else {
x = _;
y = _;
}
Run Code Online (Sandbox Code Playgroud)
在Scala中我知道可以使用该技术分配单个val:
val x = {
if (_) {
_;
} else {
_;
}
}
Run Code Online (Sandbox Code Playgroud)
实际上,可以修改上述方法以通过使块返回与变量模式匹配的元组来分配多个变量,例如:
{
if (_) {
_;
} else {
_;
}
} match { case (x, y) => _ }
Run Code Online (Sandbox Code Playgroud)
但我发现这种语法很尴尬.有没有更简单的方法,理想情况下类似于Java代码,做我想要的?
scala> val (x,y) = if (true) (3,"blah") else (1,"blis")
x: Int = 3
y: String = blah
Run Code Online (Sandbox Code Playgroud)
它看起来像一个元组赋值,但它实际上分配给多个val.(好吧,它实际上都是.)