如何在Scala中对多个类型进行模式匹配?

时间:2019-03-30 22:12:02

标签: scala

如何在Scala中对多种类型执行模式匹配?

我希望实现以下类似的模式,其中模式匹配a和b的类型,并执行类型组合的代码。

def equals[T](a: T, b: T) = {
    (a,b) match {
        case (a,b) : (String, String) = isEquals(a.asInstanceOf[String],b.asInstanceOf[String])
        case (a,b) : (Int, Int) = isEquals(a.asInstanceOf[Int],b.asInstanceOf[Int])  
    }
}

1 个答案:

答案 0 :(得分:2)

您非常亲密:

def equals[T](a: T, b: T) =
  (a, b) match {
    case (a: String, b: String) => println(s"Strings: $a $b")
    case (a: Int, b: Int)       => println(s"Ints: $a $b")
    case _                      => println("Not sure what")
  }

equals("foo", "bar") // Strings: foo bar
equals(12, 34)       // Ints: 12 34
equals(true, false)  // Not sure what