Scala:两个隐式清单
Scala: Two implicit manifiests
假设我在 class:
中有这个函数
def serializeObject[O<:MongoModel, F<:FunnelJob](mongoObject:O):F = {
grater[F].asObject(mongoObject)
}
我将无法编译它,因为我需要 O 和 F 的清单。但我无法实际使用隐式清单调用
def serializeObject[O<:MongoModel, F<:FunnelJob](mongoObject:O)(implicit mf:Manifest[O], implicit m:Manifest[F]):F = {
grater[F].asObject(mongoObject)
}
例如,无效。我怎样才能拥有两个具有两个清单的泛型?
您只需要一个 implicit
关键字,它适用于此上下文中的整个参数列表:
def serializeObject[O<:MongoModel, F<:FunnelJob](mongoObject:O)(implicit mf:Manifest[O], m:Manifest[F]):F
旁注:
你可能不需要Manifest[O]
;
调用时需要显式提供类型参数或有明确的预期类型,否则F
会被推断为Nothing
;
Manifest
s 是半弃用的,在大多数情况下应由 ClassTag
或 TypeTag
代替。见 http://docs.scala-lang.org/overviews/reflection/typetags-manifests.html.
假设我在 class:
中有这个函数 def serializeObject[O<:MongoModel, F<:FunnelJob](mongoObject:O):F = {
grater[F].asObject(mongoObject)
}
我将无法编译它,因为我需要 O 和 F 的清单。但我无法实际使用隐式清单调用
def serializeObject[O<:MongoModel, F<:FunnelJob](mongoObject:O)(implicit mf:Manifest[O], implicit m:Manifest[F]):F = {
grater[F].asObject(mongoObject)
}
例如,无效。我怎样才能拥有两个具有两个清单的泛型?
您只需要一个 implicit
关键字,它适用于此上下文中的整个参数列表:
def serializeObject[O<:MongoModel, F<:FunnelJob](mongoObject:O)(implicit mf:Manifest[O], m:Manifest[F]):F
旁注:
你可能不需要
Manifest[O]
;调用时需要显式提供类型参数或有明确的预期类型,否则
F
会被推断为Nothing
;Manifest
s 是半弃用的,在大多数情况下应由ClassTag
或TypeTag
代替。见 http://docs.scala-lang.org/overviews/reflection/typetags-manifests.html.