2
シェイプレス(2.3.2)を習得しようとしています。シェーピングレス拡張可能レコードのAPI
could not find implicit value for parameter updater: shapeless.ops.record.Updater[L,T with shapeless.labelled.KeyTag[k.type,T]]
:私のattempsのすべてが同様のコンパイルエラーで終了し
def upsert[T](k: String, v: T) = ???
:
case class Records[L <: HList](ps: L) {
def get(k: Witness)(implicit selector: Selector[L, k.T]): selector.Out = selector(ps)
def rm[V, Out <: HList](k: Witness)(implicit remover: Remover.Aux[L, k.T, (V, Out)]) =
this.copy(ps = remover(ps)._2)
def upd[F](f: F)(implicit updater: Updater[L, F]) = this.copy(ps = updater(ps, f))
}
は今、私のようなAPIメソッドを実現しようとしている:私は、拡張可能な記録のために非常に単純なコンテナを作成しました
このようなAPIを構築する方法(形容詞に固執されない)と、そのような問題を解決するための情報を収集する方法を教えてください。
それがうまくいくかどうかはわかりませんが、Updaterで行ったようにUpdater型の暗黙的なパラメータを 'upsert'に追加してください。これは一般的なルールです。暗黙的な値を求める場合は、それを暗黙のパラメータとして関連する関数に追加してみてください。 – Haspemulator
それは動作します!ありがとう – hellraiser