我試圖用無形的方式以類型安全的方式輕鬆地堆積對象。無形:前置。隱含未找到
問題是當我想連續(:::
)兩個HList
。我遇到了一個新手(似乎至少)的問題。它在上下文中忽略了一個隱含的實例Prepend
。
但是,看着hlist.scala
,我可以看到,在對象Prepend
和PrependAux
中定義了通用implicit def
。
添加import Prepend
和import PrependAux
手動沒有改變任何東西(顯然是......)。
所以這裏的代碼減少到最低限度:
enter code here
import shapeless._
import HList._
import Prepend._
import PrependAux._
object test {
val a:HList = 1 :: 4 :: "A" :: HNil
val b:HList = "R" :: false :: HNil
val c:HList = a ::: b // <<<<<<<<<<< NEEDS A Prepend in the context
}
在現在控制檯:
[error] test.scala:10: could not find implicit value for parameter prepend: shapeless.Prepend[shapeless.HList,shapeless.HList]
[error] val c:HList = a ::: b // this needs an implicit Prepend in the current context
我應該燒我的眼睛嗎?
感謝
編輯
一個小更新來重新complexify了一下真正的問題,因爲之前庸俗化爲強。
這裏是什麼樣的事情,我將能夠做到:
case class A[L<:HList](a:L) {
def doSmth[C <:HList](c:C) = a ::: c
}
所以我沒有進入真正的類型,只有我自己知道,他們是HList秒。
唯一的答案是更新也。它仍然有效。在我的解決方案中缺少的東西顯然是scalac選項... –