gpt4 book ai didi

generics - Scala 中基类和所有派生类的模式匹配

转载 作者:行者123 更新时间:2023-12-01 11:02:30 25 4
gpt4 key购买 nike

我正在努力实现这样的目标:

def a(b: Any) = {
b match {
case x: Seq[String] => println("x")
}
}

// somewhere else

a(List("b"))

因此,我很想看到“x”被打印出来,但我没有。

基本上我想匹配一个类型/特征并覆盖所有类型派生自/实现此类类型/特征的对象,特征是 Seq 并且类型参数是预先知道的。但是,由于我是 scala 新手,所以我很困惑。

想法?

最佳答案

由于类型删除,您无法检查参数化类型。看到这个问题为什么会有警告:Warning about an unchecked type argument in this Scala pattern match?

另一个问题及其答案告诉您如何解决这个问题:How do I get around type erasure on Scala? Or, why can't I get the type parameter of my collections?

尽管如此,当您不检查类型参数时,您的代码工作正常:

scala> List("a") match { case _: Seq[_] => 1 case _ => 2 }
res0: Int = 1

关于generics - Scala 中基类和所有派生类的模式匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9443165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com