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