抽象クラスを試していたときに、偶然この問題に遭遇しました。次のコード:
import shapeless._
class A
[tuple <: Product, hlist <: HList]
(tuple: tuple)
(implicit tupleGeneric: Generic.Aux[tuple, hlist])
{
private val hlist = tupleGeneric.to(tuple)
println(hlist)
}
new A((1, 'b')) {}
次のメッセージが表示されてコンパイルに失敗します。
could not find implicit value for parameter tupleGeneric: shapeless.Generic.Aux[(Int, Char),shapeless.::[Int,shapeless.::[Char,shapeless.HNil]]]
new A((1, 'b')) {}
^
ただし、単純に{}
からその部分を削除するnew A((1, 'b')) {}
と、問題なく暗黙的であることがわかります。
これは Scala のバグですか、それとも何か不足していますか?