我有课
case class MyClass[T](values: List[T])
我正在尝试创建一个函数,它将根据 T 的类型返回一个值
def myFunc: T = values match {
case v: List[Boolean] => false
case v: List[MyType] => MyType.defaultVal
case _ => throw new Exception("unsupported type")
}
但是,我收到编译错误:
Boolean 类型的表达式不符合预期类型 T
MyType.defaultVal.type 类型的表达式不符合预期类型 T
我想我可以通过创建抽象类和子类来解决这个问题,但我不想这样做。还有其他方法可以解决这个问题吗?
我认为你可以用scala解决它type tag https://docs.scala-lang.org/overviews/reflection/typetags-manifests.html但我不是该领域的专家,总是觉得这太复杂了。
我喜欢使用的一个更简单的解决方案是对头部元素进行模式匹配:
def myFunc: T = values.headOption.map {
case v: Boolean => false
case v: MyType => MyType.defaultVal
case _ => throw new Exception("unsupported type")
}.getOrElse(throw new Exception("unsupported type"))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)