NilCoalescingAssignmentOperators is Swift micro-library that provides two nil-coalescing/assignment-combo operators:
lhs ??= rhs works like Ruby's ||= operator:
- If
lhsis non-nil, does nothing. - If
lhsis nil butrhsis non-nil, does the assignment:lhs = rhs - If
lhs&rhsare both nil, does nothing.
lhs ??= rhsis equivalent to:
// roughly:
lhs = lhs ?? rhs
// precisely:
if lhs == nil { lhs = rhs }lhs =?? rhs works similarly, but prefers the rhs over the lhs:
- If
rhsis nil, does nothing. - If
rhsis non-nil, does the assignment:lhs = rhs
- If
lhs&rhsare both non-nil, still does the assignment.
lhs =?? rhsis equivalent to:
// roughly:
lhs = rhs ?? lhs
// precisely:
if rhs != nil { lhs = rhs }
// or
if let rhs = rhs { lhs = rhs }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.)