[英]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.