在Witness
的“无形”实现中,value
的类型value: T { }
看起来很像我认为如果T
有任何路径依赖类型,它们就是丢失(reference)。
例如,假设我有类似的类型:
trait Field {
type Out
}
我想做类似以下的事情:
def foo[F <: Field](implicit witness: Witness.Aux[F], show: Show[witness.value.Out]) { ... }
是否可以在无形的见证中保留路径类型?
背景:我正在努力完成this,有人建议this。但是,他们的解决方案不起作用,因为Witness
为每个对象提供了一个唯一的隐含,而当两个Field
类型具有相同的路径时,他们的解决方案最终会出现隐式冲突。