Чтобы развернуть необязательное и передать его функции, которую я обычно использую:
var optionalInt: Int?
optionalInt.map { someFunctionThatTakes(aNonOptional: $0) }
Теперь у меня есть необязательная ошибка, которую я хотел бы выдать, если она не равна nil:
var optionalError: Error?
optionalError.map { throw $0 }
Это не сработает, потому что замыкание, переданное карте, не может сгенерировать.
Альтернативным решением было бы использование полного синтаксиса if let
:
if let theError = optionalError { throw theError }
Но этоиспользует имя переменной theError
дважды и более подвержено ошибкам, чем прекрасная реализация .map
.
Кто-нибудь знает более чистый способ реализации этого?