LoginSignup
6
7

More than 5 years have passed since last update.

[Swift] Resultの処理を簡単に

Last updated at Posted at 2018-05-11

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
  }
}
6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7