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
aVariable
is non-nil, does nothing. - If
aVariable
is nil butnewValue
is non-nil, does the assignment:aVariable = newValue
- If
aVariable
&newValue
are both nil, does nothing.
aVariable ??= newValue
is 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
newValue
is nil, does nothing. - If
newValue
is non-nil, does the assignment:aVariable = newValue
- If
aVariable
&newValue
are both non-nil, still does the assignment.
aVariable =?? newValue
is 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.)