Resultが面倒くさい
Resultを処理する時Swift5では以下のようになるとおもいます。
let result = Result(100)
switch result {
case let .success(value): print(value * 5)
case let .failure(error): print(error)
}
長い。面倒くさい。
ScalaやRustがうらやましい!!
こうなった
Future<T> のように処理できるようにしました。
let result = Result(100)
result
.ifSuccess { print($0 * 5) }
.ifError { print($0) }
短い! わかりやすい!(個人の感想です)
やりかた
以下、extensionです。
extension Result {
@discardableResult
func ifSuccess(_ f: (Success) -> Void) -> Result {
if case let .success(value) = self {
f(value)
}
return self
}
@discardableResult
func ifFailure(_ f: (Failure) -> Void) -> Result {
if case let .failure(error) = self {
f(error)
}
return self
}
}