我可以在没有scala中嵌套模式匹配的情况下将if-else语句转换为模式匹配吗



假设我有这个条件,所有的值都相互依赖-

val a = 9
val b = 89
val c = 0
val result =
if (a == 0) 0
else if (b == 4) 0
else if (c < 90) 0
else a + b + c

如何在不嵌套的情况下使用模式匹配进行编码,或者可以用这种方式进行编码。在这种情况下使用if-else条件而不是使用模式匹配是否有一些缺点。

你可以这样做:

val a = 9
val b = 89
val c = 0
val result =
(a, b, c) match {
case (0, _, _)             => 0
case (_, 0, _)             => 0
case (_, _, c) if (c < 90) => 0
case (a, b, c)             => a + b + c
}

但老实说,我只想使用if / else
在这里,您没有匹配任何模式

您也可以忽略匹配参数:

val a = 9
val b = 89
val c = 0
val result = a match {
case _ if a == 0 => 0
case _ if b == 0 => 0 
case _ if c < 90 => 0
case _           => a + b + c
}

这并不比if/else语句好,但它仍然是下一个实现这一点的方法。

最新更新