scala - 如何匹配多个参数?

标签 scala pattern-matching

我有一个功能:

def func(a: int, b: int, c: double): int

我想匹配各种可能的场景
  • 哪里c为 0,返回 b-a
  • 哪里c > 9, 返回 0
  • 哪里a=b返回 0

  • 依此类推,如果以上都不满足,则在做一些更复杂的逻辑之前。

    我是否必须先单独匹配 c,还是可以匹配 a、b、c,例如 _,_,0 ?

    最佳答案

    您可以像这样对所有描述的情况进行模式匹配:

    def func(a: Int, b: Int, c: Double) = (a, b, c) match {
        case (a, b, 0) => b - a
        case (a, b, c) if c > 9 || a == b => 0
        case _ => 1 // add your logic here
    }
    

    关于scala - 如何匹配多个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5392922/

    相关文章:

    scala - 如何覆盖隐式值?

    scala - 密封类的 list 实例上的模式匹配

    Java 文本标签替换代码

    c++ - 有穷自动机的模式匹配

    haskell - 在表达式的情况下与已分配的变量匹配

    unit-testing - 如何减少specs2中的故障显示

    Scala "<-"用于理解

    eclipse - Scala 中的公共(public)变量?

    scala - 如何验证一个方法在specs2中被准确地调用了N次?

    scala - 是否可以在 scala 的 akka ByteString 上进行模式匹配?