Open dtrofimov opened 3 years ago
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 }
Let's extend Then with mutate function (alternatives: update, access, write):
Then
mutate
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!
Hope to be a PR.
Motivation
To mutate some deeply nested value types, we have to write the whole key path at least twice:
Solution
Let's extend
Then
withmutate
function (alternatives:update
,access
,write
):Usage:
It would be great to have this in Then library. Thank you!