Я хотел бы знать, что эквивалентно протоколу для инициализатора в простом классе, который содержит только функциональные возможности инициализации и предназначен только для расширения в конкретном классе.
Так что, наверное, проще всего показать код - я ищу расширение протокола, эквивалентное следующему:
import UIKit
class Thing {
var color:UIColor
init(color:UIColor) {
self.color = color
}
}
class NamedThing:Thing {
var name:String
init(name:String,color:UIColor) {
self.name = name
super.init(color:color)
}
}
var namedThing = NamedThing(name: "thing", color: UIColor.blueColor())
Я ожидал, что код будет выглядеть примерно так:
protocol Thing {
var color:UIColor {get set}
}
extension Thing {
init(color:UIColor) {
self.color = color
}
}
class NamedThing:Thing {
var name:String
var color:UIColor
init(name:String,color:UIColor) {
self.name = name
self.init(color:color)
}
}
Я видел решения, предлагаемые в других вопросах StackOverflow (например, Как определить инициализаторы в расширении протокола?), но я не уверен, что они работают, обратитесь к этой проблеме дополнительных параметров в инициализаторе класса.