【发布时间】:2015-04-01 04:36:48
【问题描述】:
是否可以获取未初始化案例类方法的返回类型?我想创建一个像这样工作的包装器:
abstract class Node[L, R]{
def call(args: L): R
}
case class Kls(arg1: Int, arg2: Int) {
def apply() = arg1 + arg2
}
object Node {
def apply[L <: { def apply(): R }, R](implicit lgen: LabelledGeneric[L]): Node[lgen.Repr, R] = {
new Node[lgen.Repr, R] {
def call(args: lgen.Repr): R = {
lgen.from(args).apply()
}
}
}
}
val n = Node[Kls] // does not compile - missing type param R
n.call(arg1 :: arg2 :: HNil) //should have the right return type
或者,是否有 FnTo标签产品?我需要创建什么样的宏符?
【问题讨论】:
-
如果没有
Node和Kls的定义,很难判断这里发生了什么。 “未初始化”是什么意思? -
为问题添加了定义。未初始化是指
Node.apply仅传递一个类型参数,而不是实际的Kls实例