Yeah a way to have a function that mutates a struct return a new copy with that mutation would be awesome ! Rather than mutating in place.
*___________________________________* *James⎥Head Of CEO* *[email protected] <[email protected]>⎥supmenow.com <http://supmenow.com>* *Sup* *Runway East * *10 Finsbury Square* *London* * EC2A 1AF * On Wed, Mar 23, 2016 at 2:28 PM, William Dillon via swift-evolution < [email protected]> wrote: > I like this. I’m always annoyed when I need var just because I can’t get > all my initialization done with let. > > - Will > > > On Mar 23, 2016, at 2:32 AM, Brent Royal-Gordon via swift-evolution < > [email protected]> wrote: > > > >> let john = {firstName="John"; lastName="Doe"} > >> let alice = {john with FirstName="Alice"} > >> > >> Current way to do this in Swift is: > >> > >> let john = (firstName:"John", lastName:"Doe") > >> var alice = john > >> alice.firstName = "Alice" > > > > I think this is better modeled in Swift as something like: > > > > let john = (firstName:"John", lastName:"Doe") > > let alice = with(john) { > > $0.firstName = "Alice" > > } > > > > `with` would be something like: > > > > func with<Value>(value: Value, function: Value throws -> Void) > rethrows -> Value { > > var mutableValue = value > > return try function(&mutableValue) > > } > > > > This would serve many different purposes: > > > > * If the value is a value type, allows you to return a modified copy > > * Allows you to customize a value's properties immediately after > initializing it, which many people have asked for > > * Acts as a `tap` function when the block doesn't change the value (see < > http://ruby-doc.org/core-2.3.0/Object.html#method-i-tap>) > > > > -- > > Brent Royal-Gordon > > Architechies > > > > _______________________________________________ > > swift-evolution mailing list > > [email protected] > > https://lists.swift.org/mailman/listinfo/swift-evolution > > _______________________________________________ > swift-evolution mailing list > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution >
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
