Optional型(列挙型)へ値を代入
enum Optional2<T> : ExpressibleByNilLiteral {
case None
case Some(T)
init(){
self = .None
}
init(_ some: T){
self = .Some(some)
}
init(nilLiteral: ()){
self = .None
}
}
let v1 : Optional2 = 10 // ERROR
let v2 : Optional2 = Optional2(10) // OK
let v3 : Optional2 = Optional2.Some(10) // OK
let vnl : Optional2 = nil // OK
上記のERRORは、本当のオプショナル型の場合、代入できますが、
上記の列挙型では、コンパイルエラーとなります。
代入演算子を作成しようと思ったのですが、実装に失敗します。
static func = (lhs: Optional2 , rhs: T)->Void{}