要将可选项解包并传递给函数,我通常使用以下方法:
var optionalInt: Int?
optionalInt.map { someFunctionThatTakes(aNonOptional: $0) }
现在我有一个可选的错误,如果它不是nil,我想要抛出它:
var optionalError: Error?
optionalError.map { throw $0 }
这样做是行不通的,因为传递给map的闭包无法抛出异常。
另一种解决方案是使用完整的if let
语法:
if let theError = optionalError { throw theError }
但是这种方法使用了变量名theError
两次,而且比优美的.map
实现更容易出错。
有没有人知道一种更简洁的实现方式?