-
Notifications
You must be signed in to change notification settings - Fork 298
Open
Description
Motivation
To mutate some deeply nested value types, we have to write the whole key path at least twice:
some.very[deep].structure.someProperty = someValue
some.very[deep].structure.anotherProperty = anotherValue
// or with Then:
some.very[deep].structure = some.very[deep].structure.with {
$0.someProperty = someValue
$0.anotherProperty = anotherValue
}Solution
Let's extend Then with mutate function (alternatives: update, access, write):
extension Then {
public mutating func mutate(_ block: (inout Self) throws -> Void) rethrows {
try block(&self)
}
}Usage:
some.very[deep].structure.mutate {
$0.someProperty = someValue
$0.anotherProperty = anotherValue
}It would be great to have this in Then library. Thank you!
loinsir, tanpengsccd, Chuncheonian and berbschloe
Metadata
Metadata
Assignees
Labels
No labels