LoginSignup
3
3

More than 5 years have passed since last update.

Eitherについて調べてみた

Last updated at Posted at 2017-02-18

Eitherとは

Eitherとは「2つの型のうちどちらか」を表す型です。
例えば、正常値とエラー値どちらかを返したい場合に使用します。
ただしEitherへ与える左右の型引数は平等に扱われるため、「AもしくはBどちらかを返す型」といった一般的な使い方ができます。

実装例

Either.swift
enum Either<Left, Right> {
    case left(Left)
    case right(Right)
}

Left.swift
class Left {
    var name: String = "left"
}
Right.swift
class Right {
    var name: String = "right"
}
ViewController.swift
override func viewDidLoad() {
        super.viewDidLoad()
        let leftResult = toResult(.left(Left()))  // left
        let rightResult = toResult(.right(Right())) // right

        NSLog("leftClassName = \(leftResult)")
        NSLog("rightClassName = \(rightResult)")
    }

    func toResult(type: Either<Left, Right>) -> String {
        switch type {
        case .left(let left):
            return left.name

        case .right(let right):
            return right.name
        }
    }
}

感想

APIとかの通信エラーのハンドリングとかに使えそう

参考記事
Swift 3.0で追加されそうなEitherについて:
http://qiita.com/koher/items/288f01cddb0bbb6aa4e1

3
3
1

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
3
3