[英]Scala : Match of parameter Type
我正在制作一个应用程序,该应用程序在Solr中使用Scala发出请求。 实际上,我在请求后得到了10个案例类。 要制作通用应用,我尝试使用参数类型。
我的问题:我必须在我的参数类型上进行切换,并且它不起作用(由于擦除)。
看到我的反思和伪代码:
getItem[Apple](10)
=>
def getItem[T](id : Option[Int]) = {
... // Here I request Solr then i want to create my caseClass from Solr docs.
mapsolr[T].toUseCase(docs) // send solr docs to map
}
这是我的映射:
class mapSolr(docs){
def toUseCase[T] = {
// Here i want to be able to make a switch on T
typeOf[T] match {
case x if x =:= typeOf[CaseClass1] =>
blabla // (return List[CaseClass1]
case x if x =:= typeOf[CaseClass2] =>
blabla // (return List[CaseClass2]
}
}
我收到错误“ T没有可用的TypeTag”。 我知道这是因为删除,但我不知道该怎么做。
我只想能够测试我的参数类型...
谢谢。
您需要添加绑定到T的TypeTag上下文:
import scala.reflect.runtime.universe._
def toUseCase[T: TypeTag] = {
// Here i want to be able to make a switch on T
typeOf[T] match {
case x if x =:= typeOf[CaseClass1] =>
blabla // (return List[CaseClass1]
case x if x =:= typeOf[CaseClass2] =>
blabla // (return List[CaseClass2]
}
}
您还需要在使用此方法的通用代码中传递TypeTag:
def getItem[T: TypeTag](id : Option[Int]) = {
... // Here I request Solr then i want to create my caseClass from Solr docs.
mapsolr[T].toUseCase(docs) // send solr docs to map
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.