0
誰かが形を変えずに私を助けることができますか?私はそれで新しいです。2つの形のない関数(replaceAtとat)をどのように組み合わせるのが最も簡単ですか?
私の具体的なタスク - たとえばオプション に与えられたタプルの要素を変換する関数を作成:
val inp: (String, Int) = ("zzz", 5)
myfunc(inp, 1)
べきリターン:("zzz", Option(5))
私はreplaceAt
とat
でこれらの作業を行うことができますことを発見しかし、私はこの一般的な関数でこれを行う方法を理解することはできません。 私の最高の結果がこれです:
def opt[P <: Product, U, V, R](p: P, n: Nat, u:()=>U)(implicit at: At[P, n.N], replacer: ReplaceAt.Aux[P, n.N, Option[U], (V, R)]):R = {
val value1: TupleOps[P] = shapeless.syntax.std.tuple.productTupleOps(p)
val out1 = value1.at(n)
value1.updatedAt(n, Option(u()))
}
だから私はopt(t, 1,()=> t.at(1))
ようにそれを呼び出すことができますが、私は非常に第三のparamを使用しないしたい
ので、一般的には私の問題はされています
at()
出力とreplaceAt()
入力を組み合わせることはできません。
IDEは私がat()
出力としてAt[P, n.N]#Out
を使用しますが、replaceAt
ありがとうございました!これは私が必要としていたようです。私は 'ModifierAt'に問題がありましたが、私はそれを使用する' updateAtWith() 'を使用しました。そして、今はすべてがうまくいくはずです:) – MercurieVV