[swift-evolution] [Pre-Draft] Nil-coalescing and errors
Guillaume Lessard
glessard at tffenterprises.com
Thu Apr 7 11:30:11 CDT 2016
A different direction would be to add a non-autoclosure variant to ?? that explicitly takes a closure.
public func ??<T>(optional: T?, defaultValue: () throws -> T) rethrows -> T {
switch optional {
case .Some(let wrapped): return wrapped
case .None: return try defaultValue()
}
}
Then, the following works:
var v = Optional(7)
// v = nil
do {
let i = try v ?? { throw NSError(domain: "", code: 0, userInfo: [:]) }
print(i)
}
catch {
print(error)
}
Or, even more generally, allow functions and operators that take autoclosure parameters to be used with explicit closures? I shrugged my shoulders and wrote an overload when I hit that limitation, but I wonder whether it is necessary.
Cheers,
Guillaume Lessard
More information about the swift-evolution
mailing list