将 class 类型传递给 Scala 中的函数
Pass class type to a function in Scala
我有一个具有此签名的函数;
def process[E: TypeTag : ClassTag](id: Int): E = {
通常我会这样称呼它:
process[Item](1)
我需要从变量中存储项目类型的地方调用它。
tt.tpe.members.collect {
case m if m.isMethod && m.asMethod.isCaseAccessor => m.asMethod
} foreach { member => {
// member is a MethodSymbol that can be used to get a type
// how to call process[??](id) from here?
我假设我必须使用 reflect 或 returnType,但是如何传递通用类型?
您可以将 typeTag
和 classTag
显式传递给该方法,它将从中推断类型参数:
process(id)(typeTag, classTag)
要了解如何从 Type
获取 TypeTag
,请参阅 , and to get ClassTag
from TypeTag
, look here。
要从 member
获取 Type
,请使用 member.returnType
我有一个具有此签名的函数;
def process[E: TypeTag : ClassTag](id: Int): E = {
通常我会这样称呼它:
process[Item](1)
我需要从变量中存储项目类型的地方调用它。
tt.tpe.members.collect {
case m if m.isMethod && m.asMethod.isCaseAccessor => m.asMethod
} foreach { member => {
// member is a MethodSymbol that can be used to get a type
// how to call process[??](id) from here?
我假设我必须使用 reflect 或 returnType,但是如何传递通用类型?
您可以将 typeTag
和 classTag
显式传递给该方法,它将从中推断类型参数:
process(id)(typeTag, classTag)
要了解如何从 Type
获取 TypeTag
,请参阅 ClassTag
from TypeTag
, look here。
要从 member
获取 Type
,请使用 member.returnType