2017-03-15 1 views
1

저는 shapeless를 구현할 수 없습니다. 스칼라 유형 매개 변수화 된 함수를 사용합니다. 다음 코드에서는 "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) 

누락 된 항목이 있습니까?

답변

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) 

당신은, 일반적으로 Aux 패턴을 사용할 필요가 제네릭이 구체화 매크로하지만 추상 형의 멤버로 노출되어있어 임의의 유형을 생산하고 있습니다. 아직 여기에있는 모든 단어를 이해하지 못하면 here을 읽어보십시오.

+0

고맙습니다. 또한 Aux 패턴에 대해 알려 주신 것에 대해 감사 드리며 제공된 링크를 통해 안내해 드리겠습니다. :) –

+0

@RaKa 도움을 기쁘게 해드립니다. 마일즈는 당신이 발견 할 수있는 놀라운 인물이며, 그 밖에도 많은 사람들이 엉망이되었습니다. – flavian

관련 문제