初始化器作为在Swift中转换为新类型的一种方式

时间:2014-10-12 17:32:53

标签: generics swift optional initializer

我有以下类型Maybe

enum Maybe<T>:{
    case Nothing
    case Something(T)

    init(){
        self = .Nothing
    }

    init(_ something: T){
        self = .Something(something)
    }


}

我希望此代码可以调用我的第二个初始化程序,将Int转换为Maybe<NSDate>

var c : Maybe<NSDate> = NSDate()

不是这样。如何使上述代码工作(如内置Optional那样)?

1 个答案:

答案 0 :(得分:1)

您需要致电初始化程序:

var c = Maybe(NSDate()) 
// type of c inferred as Maybe<NSDate>

Swift的Optional类型依赖于某些编译器魔法来允许直接分配给它的Some<T>情况,而无需显式调用初始化程序。