2017-03-15 2 views
1

私はscaleless型のパラメータ化された関数でshapeless.Genericを実装することができません。次のコードでは、「gen:shapeless.Generic [T]」という暗黙の値を見つけることができませんでした。スカラ型のパラメータ化、シェイプレス - パラメータの暗黙の値を見つけることができませんでした。

def foo[T](instance: T) = { 
    val gen = shapeless.Generic[T] //getting error in this line!!! 
    val values = gen.to(instance) 
    println(values) 
    } 
    case class Bar(x:String, y:String) 
    var bar = Bar("a","b") 
    foo(bar) 

紛失しているものはありますか?あなたは通常Auxパターンを使用する必要が

答えて

3
def foo[T, HL <: HList](instance: T)(
    implicit gen: Generic.Aux[T, HL] 
) = { 
    val values = gen to instance 
    println(values) 
    } 

case class Bar(x: String, y: String) 

、ジェネリック医薬品は、マテリアライズド・マクロですが、抽象型メンバーとして公開されています任意の種類を生成します。今ここですべての言葉を理解できない場合は、hereをお読みください。

+0

ありがとう、私はこれが単純だとは思わなかった。また、私にAuxパターンについて知らせてくれてありがとう、そして私はあなたの提供されたリンクを通ります。 :) –

+0

@RaKa喜んでお手伝いしますが、マイルズはあなたが発見する素晴らしい人です。 – flavian

関連する問題