首页 > 解决方案 > 我可以将此 if else 语句转换为模式匹配,而无需在 scala 中进行嵌套模式匹配吗?

问题描述

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

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 条件而不是使用模式匹配是否有一些缺点。

标签: scalaif-statementswitch-statementpattern-matching

解决方案


那么你可以这样做:

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.
在这里,您不匹配任何模式


推荐阅读