-1 I personally think Optional has received too much special treatment in the language already. I’ve known folks who have written Swift professionally for almost a year until they realize Optional is just an enum. More magic syntax around it would only make this worse.
> On Jan 25, 2017, at 10:35 AM, Jacob Bandes-Storch via swift-evolution > <swift-evolution@swift.org> wrote: > > Agreed, IMO it would be quite dangerous for "a ??= b" to mean anything other > than "a = a ?? b". > > On another note, I don't see the value of "a? = b". I had never realized > before that this works. Is this feature actually used in the wild? Should we > consider removing it? (I could perhaps see some value if the assignment > operator were overloadable, but it's not.) > > Jacob > > On Wed, Jan 25, 2017 at 10:28 AM, John McCall <rjmcc...@apple.com > <mailto:rjmcc...@apple.com>> wrote: >> On Jan 25, 2017, at 12:47 PM, Jacob Bandes-Storch via swift-evolution >> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote: >> Really? My observation from a quick test is that "a? = b" assigns b to a if >> a already has a value, or does nothing if it's nil. This is sort of the >> opposite of what's being proposed, which is that "a ?= b" should assign to a >> only if it does NOT have a value. > > Right. On the other hand, this does seem like a poor spelling for the > operator, given the ease of confusion. > > Also, I'm finding it hard to imagine a use for this where the equivalent ?? > invocation wouldn't be *much* clearer. It just feels like you must be doing > something backwards — "I've filled in a default value for this variable, now > overwrite it if this other value exists". Wouldn't the reverse generally be > better? > > John. > >> On Wed, Jan 25, 2017 at 9:33 AM Joe Groff via swift-evolution >> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote: >> >> > On Jan 25, 2017, at 8:40 AM, Nichi Shin via swift-evolution >> > <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote: >> > >> > I’d like to propose a new operator for optional assignment in Swift. >> > >> > The idea is that by using this operator (e.g. by doing a ?= b), the >> > optional on the right would be assigned to the variable on the left only >> > when it has something to assign (i.e. when it's not nil). >> >> `a? = b` already does this. Maybe we need a fixit to make that more >> apparent, though. >> >> -Joe >> >> > >> > The implementation could be something as follows: >> > >> > /// Optional Assignment Operator >> > infix operator ?=: AssignmentPrecedence >> > >> > func ?=<T>(left: inout T, right: T?) { >> > if right != nil { >> > left = right! >> > } >> > } >> > >> > func ?=<T>(left: inout T?, right: T?) { >> > if right != nil { >> > left = right >> > } >> > } >> > >> > I hope you will consider adding this on a future release of this great >> > programming language. >> > >> > Kind regards, >> > N. S. >> > _______________________________________________ >> > swift-evolution mailing list >> > swift-evolution@swift.org <mailto:swift-evolution@swift.org> >> > https://lists.swift.org/mailman/listinfo/swift-evolution >> > <https://lists.swift.org/mailman/listinfo/swift-evolution> >> >> _______________________________________________ >> swift-evolution mailing list >> swift-evolution@swift.org <mailto:swift-evolution@swift.org> >> https://lists.swift.org/mailman/listinfo/swift-evolution >> <https://lists.swift.org/mailman/listinfo/swift-evolution> >> _______________________________________________ >> swift-evolution mailing list >> swift-evolution@swift.org <mailto:swift-evolution@swift.org> >> https://lists.swift.org/mailman/listinfo/swift-evolution >> <https://lists.swift.org/mailman/listinfo/swift-evolution> > > > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution