2
所以我想通過HList
創建一個映射函數,但是我需要檢查應用函數中的一些條件。水木清華這樣的:在多功能中刪除類型,scala
object test extends Poly1 {
implicit def default[L <: HList](implicit head: ops.hlist.IsHCons[L]) =
at[L](t => {
if(true) t.head else false //here some condition
})
}
結果,我們失去約t.head
元素的type
的所有信息;順便說一句,如果我們建立「清潔」功能:
object test extends Poly1 {
implicit def default[L <: HList](implicit head: ops.hlist.IsHCons[L]) =
at[L](t => t.head)
}
然後,顯然,一切都好。
所以問題是:如何處理它,並做出這樣的功能(如果可能的話)或我應該以另一種方式尋找?爲什麼在這裏可以進行類型擦除?
哦,我明白了,如果我寫下如下:'at [L](if(true)t => t.head else t => false)'我會得到'Any'...它再次所有功能類型的原因? 嗯,所以我想... Thx對於一個關於頭部使用的酷記錄,順便說一句,它會很酷,不會通過所有其他暗示(對於地圖,平面地圖,差異定製助手等等) :D – DaunnC
哦,我完全理解! thx,現在對我來說都很清楚。 – DaunnC