Generics 初始值设定项作为在Swift中转换为新类型的一种方式

Generics 初始值设定项作为在Swift中转换为新类型的一种方式,generics,swift,optional,initializer,Generics,Swift,Optional,Initializer,我有一种叫做的类型,可能是: enum Maybe<T>:{ case Nothing case Something(T) init(){ self = .Nothing } init(_ something: T){ self = .Something(something) } } 没有。如何使上述代码工作(如内置的可选所做的那样)?您需要调用初始值设定项: var c = Maybe(NSD

我有一种叫做
的类型,可能是

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

    init(){
        self = .Nothing
    }

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


}

没有。如何使上述代码工作(如内置的
可选
所做的那样)?

您需要调用初始值设定项:

var c = Maybe(NSDate()) 
// type of c inferred as Maybe<NSDate>
var c=Maybe(NSDate())
//c的类型推断为可能
Swift的
可选
类型依赖于一些编译器魔法,允许直接赋值给它的
某些
大小写,而无需显式调用初始值设定项

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