+1 on this. > On Jun 12, 2016, at 8:01 AM, Andrey Fidrya via swift-evolution > <swift-evolution@swift.org> wrote: > > Nil coalescing operator has very low precedence and it's very easy to forget > the parentheses. > It's tempting to write something like this: > > let result = v1 ?? 0 + v2 ?? 0 > > Which will resolve to > > let result = v1 ?? (0 + v2 ?? 0) > > An example of incorrect code from real project which went unnoticed for some > time: > > let allParameters: [String: Any?] = > defaultParameters["sendMessage"] ?? [:] + > parameters + > ["chat_id": chat_id, "text": text] > > Unlike ternary operator I can hardly think of a case when someone would want > to use ?? in expression like: > a + b ?? c + d meaning (a + b) ?? (c + d) > > This seems to be a source of errors in other languages as well, for example: > http://www.codeproject.com/Tips/721145/Beware-The-null-coalescing-operator-is-low-in-the > > I propose to consider raising it's precedence or requiring parentheses if ?? > is used with multiple statements. > > -- > Andrey Fidrya > > _______________________________________________ > 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