gpt4 book ai didi

scala - 如何编写一个执行带有泛型类型的 case 语句的函数?

转载 作者:行者123 更新时间:2023-12-04 19:08:57 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How to pattern match on generic type in Scala?

(4 个回答)



How do I get around type erasure on Scala? Or, why can't I get the type parameter of my collections?

(11 个回答)


8年前关闭。




我想写一个这样的函数:

def genericCase[T]() : PartialFunction[Any, T] = { 
case Wrapper(_, item: T) => item
case Wrapper(item: T, _) => item
}

换句话说,我想要一种方法来重用不同类型的模式匹配的结构。
编译器告诉我,由于类型删除, case x: T永远不会匹配。做这种通用 case 语句的替代方法是什么?我还尝试在反射 API 中使用类型作为函数的参数,但我们无法弄清楚。

最佳答案

您只需要添加一个隐式 ClassTag它允许匹配泛型类:

import scala.reflect.ClassTag

def genericCase[T: ClassTag]() : PartialFunction[Any, T] = {
case Wrapper(_, item: T) => item
case Wrapper(item: T, _) => item
}

关于scala - 如何编写一个执行带有泛型类型的 case 语句的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17704497/

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