这里是deriveHCons
在无形的LabelledProductTypeClassCompanion
签名:为什么deriveHCons的签名声明`HK <:Symbol`当符号是一个final类
implicit def deriveHCons[HK <: Symbol, HV, TKV <: HList]
(implicit
ch: Lazy[C[HV]],
key: Witness.Aux[HK],
ct: Lazy[Wrap[TKV] { type V <: HList }]
): Wrap.Aux[FieldType[HK, HV] :: TKV, HV :: ct.value.V] = ...
我觉得奇怪,我说,我们声明一个类型当Symbol
是最后一类时,参数HK
必须来自Symbol
。 Symbol
什么都可以替换类型参数HK
?如果HK
始终为Symbol
,那么如果它签署了HK并且直接替换了签名中的Symbol,那么这个签名就不那么重要了?
那么......你知道'Shapeless'的目的是什么......基于类型的泛型编程实现了Scala通常不可能实现的功能 - https://github.com/milessabin/shapeless/wiki/Feature-overview :-shapeless-2.0.0#singleton-typed-symbols – 2015-02-10 00:10:58
@SarveshKumarSingh Thx为指针!仍然不确定我是否明白所有这些工作如何,但我有一个获得更好理解的出发点。 – jedesah 2015-02-10 00:16:58