Я пытаюсь переопределить Optional
в Swift. Я называю это Maybe
. У меня есть 2 inits, чтобы создать пустую или нулевую версию и один держит общий тип:По умолчанию init в Swift перечисление игнорируется
enum Maybe<T>{
case Nothing
case Something(T)
init(){
self = .Nothing
}
init(_ something: T){
self = .Something(something)
}
}
Однако, когда я пытаюсь создать пустой Maybe
, то init()
инициализатор не называется. Вместо этого другой init(_ something: T)
вызывается с T =()
.
Что происходит? Почему инициализация без параметров игнорируется?
var z = Maybe() // this calls init(_ something: T) with T =()
И теперь swift 4 не будет компилироваться, если вы явно не задали тип generate. – ZYiOS