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))
처럼 호출 할 수 있습니다,하지만 매우 3 PARAM를 사용하지 싶습니다
그래서, 일반적으로 내 문제가있다 :
나는 at()
출력과 replaceAt()
입력을 조합 할 수 없다.
IDE 날 at()
출력으로 At[P, n.N]#Out
을 사용하여 제공하지만 replaceAt
감사합니다! 이것은 내가 필요로했던 것 같습니다.'ModifierAt'에 문제가 있었지만 그것을 사용하는'updateAtWith()'를 사용했습니다. 그리고 이제는 모든 것이 제대로 작동합니다 :) – MercurieVV