Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python "or" equivalent in Swift?

Due to Swift cool behaviors I was looking for an or equivalent in Swift.

Something like this:

variable = value or default

I coded mine:

func |<T>(a:T?, b:T) -> T {
    if let a = a {
        return a
    }
    return b
}

But I was wondering if any default implementation of this already exists in Swift?

Edit: Thanks to answers I found the reference in the Swift book:

Nil Coalescing Operator

The nil coalescing operator (a ?? b) unwraps an optional a if it contains a value, or returns a default value b if a is nil. The expression a is always of an optional type. The expression b must match the type that is stored inside a.

The nil coalescing operator is shorthand for the code below:

    a != nil ? a! : b

The code above uses the ternary conditional operator and forced unwrapping (a!) to access the value wrapped inside a when a is not nil, and to return b otherwise. The nil coalescing operator provides a more elegant way to encapsulate this conditional checking and unwrapping in a concise and readable form. (source)

like image 950
Francescu Avatar asked Jan 10 '23 17:01

Francescu


2 Answers

Use ??:

var optional:String?
var defaultValue:String = "VALUE"

var myString:String = optional ?? defaultValue

print(myString)
like image 193
Kirsteins Avatar answered Jan 19 '23 14:01

Kirsteins


You could use the nil coalescing operator

let variable = optional ?? default
like image 20
o.uinn Avatar answered Jan 19 '23 16:01

o.uinn