The idiom for dealing with optionals in Swift seems excessively verbose, if all you want to do is provide a default value in the case where it's nil:
if let value = optionalValue {
// do something with 'value'
} else {
// do the same thing with your default value
}
which involves needlessly duplicating code, or
var unwrappedValue
if let value = optionalValue {
unwrappedValue = value
} else {
unwrappedValue = defaultValue
}
which requires unwrappedValue
not be a constant.
Scala's Option monad (which is basically the same idea as Swift's Optional) has the method getOrElse
for this purpose:
val myValue = optionalValue.getOrElse(defaultValue)
Am I missing something? Does Swift have a compact way of doing that already? Or, failing that, is it possible to define getOrElse
in an extension for Optional?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…