Как я могу получить значение, полученное из значения успеха Result в случае успеха или из значения ошибки в случае неудачи, без необходимости создавать временную переменную?
Вот рабочий, но подробный пример того, что я пытаюсь сделать:
let result = Result<Int, Error>.success(1)
let displayText: String
switch result {
case let .success(value): displayText = String(value)
case let .failure(error): displayText = "Result not available. \(error)"
}
updateDisplayText(displayText)
Я мог бы получить что-то близкое к тому, преобразовав результат в необязательное значение в желаемом формате, проверив его с помощью оператора try и используя nil -coalescing оператор для обеспечения отката.
updateDisplayText((try? result.map{ v in String(v) }.get()) ?? "Result not available.")
Однако этот подход не обращается к ошибке сбоя. Это тоже кажется слишком сложным. Есть ли подход, который работает с одним выражением, аналогично тому, что можно сделать с выражением соответствия F # ?