将泛型类型传递给scala中的泛型方法
我写了一个函数将泛型类型传递给scala中的泛型方法,scala,playframework,Scala,Playframework,我写了一个函数 def getOptional[A](key: String) : Option[A] = { redisClients.withClient(redisClient => redisClient.get[A](key) ) } 我叫它 redis.getOptional[List[Long]](REDIS_PREFIX_PRODUCT_IDS) 但这带来了一个例外 could not find implicit value for parame
def getOptional[A](key: String) : Option[A] = {
redisClients.withClient(redisClient =>
redisClient.get[A](key)
)
}
我叫它
redis.getOptional[List[Long]](REDIS_PREFIX_PRODUCT_IDS)
但这带来了一个例外
could not find implicit value for parameter parse: com.redis.serialization.Parse[A][error] redisClient.get[A](key)
这里的问题是什么?get需要一个额外的隐式参数
Parse[A]
。如果没有Parse[A]
,那么就不清楚要解析什么,因为类型A
在运行时被擦除。请尝试以下方法:
import com.redis.serialization.Parse
def getOptional[A: Parse](key: String) : Option[A] = {
redisClients.withClient(redisClient =>
redisClient.get[A](key)
)
}
get
需要一个额外的隐式参数Parse[A]
。如果没有Parse[A]
,那么就不清楚要解析什么,因为类型A
在运行时被擦除。请尝试以下方法:
import com.redis.serialization.Parse
def getOptional[A: Parse](key: String) : Option[A] = {
redisClients.withClient(redisClient =>
redisClient.get[A](key)
)
}
工作起来很有魅力。感谢像一种魅力。谢谢