ホーム>source

次のような関数があります。

def fun[T <: HList](l: T)(implicit k: HKernelAux[T], ft: FromTraversable[T]) = ???

この関数は、 HList 型の引数を渡すと機能します 。拡張可能なレコードを渡すと、これは単なる HList です  ラベルでは、暗黙的なパラメーターの値が見つかりません。何故ですか?関数が HList に対して機能するような方法はありますか sおよび拡張可能レコードまたは拡張可能レコードで機能する別の機能を提供できますか?

あなたの答え
  • 解決した方法 # 1

    事は Typeable のインスタンスです   FieldType[Witness.`'key`.T, ValueType] が見つかりません 。

    関数を変更してみてください。

    import shapeless.{HList, HNil}
    import shapeless.ops.hlist.HKernelAux
    import shapeless.ops.traversable.FromTraversable
    import shapeless.ops.record.Values
    def fun[T <: HList, T1 <: HList](l: T)(implicit v: Values.Aux[T, T1], k: HKernelAux[T1],  ft: FromTraversable[T1]) = {
      //use l.values instead of l
    }
    
    

    使用法:

    import shapeless.syntax.singleton._
    fun('a ->> 1 :: 'b ->> "x" :: HNil) // compiles
    
    

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ python - パンダは選択よりnポジション前にインデックス値を取得します