什么是Scala编写以下代码的方法:
int i;
switch(i) {
case 1:
a();
break;
case 2:
case 15:
b();
c();
break;
default: foo()
}
Run Code Online (Sandbox Code Playgroud)
即基于多个案例值执行同一段代码的惯用方法是什么?
i match {
case 1 => a
case 2 =>
case 15 => { b
c }
case _ => foo
}
Run Code Online (Sandbox Code Playgroud)
似乎没有这个技巧,因为Scala根据第一个匹配的情况评估匹配值,即如果i = 2,代码将不返回任何内容.
感谢帮助!
mid*_*dus 52
根据这个对话,没有任何影响,但你可以利用|.
这应该做的伎俩:
i match {
case 1 => a
case 2 | 15 => b
c
case _ => foo
}
Run Code Online (Sandbox Code Playgroud)
Aar*_*ron 10
Case语句实际上可以包含使用标准if语句的其他逻辑保护.所以你可以这样做:
i match {
case x if x == 1 => a
case x if (x == 2 | x == 15) => b; c;
case _ => foo
}
Run Code Online (Sandbox Code Playgroud)
匹配的保护可以是任何布尔函数或函数组合,因此它比Java中的标准switch语句提供更多的功能.
| 归档时间: |
|
| 查看次数: |
12063 次 |
| 最近记录: |