capnslipp/NilCoalescingAssignmentOperators
Combo Operators ??= and =?? (a Swift µ-Library)
`??=`
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 { aVariable = newValue }Build Overlays
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.)
Package Metadata
Repository: capnslipp/NilCoalescingAssignmentOperators
Stars: 2
Forks: 0
Open issues: 0
Default branch: master
Primary language: swift
License: Unlicense
Topics: null, operator, swift, swift-extensions, swift-library
README: README.md