[swift-evolution] [Review] SE-0024 "Optional Value Setter `??=`"

Guillaume Lessard glessard at tffenterprises.com
Tue Feb 16 13:20:03 CST 2016

For: https://github.com/apple/swift-evolution/blob/master/proposals/0024-optional-value-setter.md

> • What is your evaluation of the proposal?


The intent is interesting, but the ?? operator is simply not a good candidate for a mutating variant, as its left-hand operand and its result are of different types. The arithmetic operators generalize well to mutating variants, as lhs and result are of the same types.

> • Is the problem being addressed significant enough to warrant a change to Swift?

The proposed ??= operator seems like a counterpart to flatMap for the .None path.
I’ve seen this called `recover` in a number of places:

extension Optional {
  public func recover(@noescape transform: () -> Optional) -> Optional {
    switch self {
    case .Some: return self
    case .None: return transform()

> • Does this proposal fit well with the feel and direction of Swift?


> • How much effort did you put into your review? A glance, a quick reading, or an in-depth study?

I looked at all the places I have used the ?? operator, and considered my intent; in every case I wanted to get out of Optionality, not keep it going.

Guillaume Lessard

More information about the swift-evolution mailing list