em7*_*m70 3 generics types scala pattern-matching
我正在努力实现这样的目标:
def a(b: Any) = {
b match {
case x: Seq[String] => println("x")
}
}
// somewhere else
a(List("b"))
Run Code Online (Sandbox Code Playgroud)
因此,我喜欢看到"x"被打印,而我却不喜欢.
基本上我想匹配一个类型/特征,并覆盖其类型派生自/实现此类型/特征的所有对象,特征是Seq,并且类型参数是事先已知的.因为我是scala新手,所以我很困惑.
想法?
由于类型擦除,您无法检查参数化类型.看到这个问题,为什么会出现警告:有关此Scala模式匹配中未经检查的类型参数的警告?
另一个问题及其答案告诉你如何解决这个问题:如何解决Scala上的类型擦除问题?或者,为什么我不能获得我的集合的类型参数?
不过,当你不检查类型参数时,你的代码工作正常:
scala> List("a") match { case _: Seq[_] => 1 case _ => 2 }
res0: Int = 1
Run Code Online (Sandbox Code Playgroud)