NilCoalescingAssignmentOperators is Swift micro-library that provides two nil-coalescing/assignment-combo operators:
aVariable ??= newValue performs the value assignment if aVariable is nil (like Ruby's ||= operator):
- If
aVariableis non-nil, does nothing. - If
aVariableis nil butnewValueis non-nil, does the assignment:aVariable = newValue - If
aVariable&newValueare both nil, does nothing.
aVariable ??= newValueis equivalent to:
// roughly:
aVariable = aVariable ?? newValue
// precisely:
if aVariable == nil { aVariable = newValue }aVariable =?? newValue performs the value assignment if newValue is non-nil (like ??= but prefers the newValue over the aVariable):
- If
newValueis nil, does nothing. - If
newValueis non-nil, does the assignment:aVariable = newValue - If
aVariable&newValueare both non-nil, still does the assignment.
aVariable =?? newValueis equivalent to:
// roughly:
aVariable = newValue ?? aVariable
// precisely:
if newValue != nil { aVariable = newValue }
// or
if let newValue = newValue { aVariable = newValue }The master branch is Swift 5.x, and build overlays (the minimal changeset to the Package.swift, xcodeproj, and other build files) of the current library version are available on the swift-4.2, swift-4, and swift-3 branches. (Note: I don't check that these are built as often as I used to when Swift 4.2 or 4.0 were the latest versions, but their changes haved worked and I've merged new library versions into them since then.)