我正在尝试Optional
在 Swift 中重新实现。我正在调用它Maybe
。我有 2 个 init,用于创建空版本或 nil 版本,一个拥有泛型类型:
enum Maybe<T>{
case Nothing
case Something(T)
init(){
self = .Nothing
}
init(_ something: T){
self = .Something(something)
}
}
但是,当我尝试创建一个 emptyMaybe
时,init()
不会调用初始化程序。相反,另一个init(_ something: T)
是用 调用的T = ()
。
这是怎么回事?为什么没有参数的init被忽略?
var z = Maybe() // this calls init(_ something: T) with T = ()