這裏是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