Я ищу способ добавить инициализатор по умолчанию к протоколу через расширения протокола.
Мой протокол:
protocol TestProtocol {
var myVar : Double { get set }
init(value: Double)
init(existingStruct : TestProtocol)
}
Я реализовал структуру, используя этот протокол, как:
struct TestStruct : TestProtocol {
var myVar : Double
init(value : Double) {
myVar = value
}
init (existingStruct : TestProtocol) {
myVar = existingStruct.myVar
}
}
Однако, если я попытаюсь через расширение сделать инициализатор по умолчанию для этого протокола, я столкнусь с проблемами:
extension TestProtocol {
init(value : Double) {
myVar = value
}
init(existingStruct : TestProtocol) {
myVar = existingStruct.myVar
}
}
Если обе строки присваивания выдают ошибку Переменная 'self' передается по ссылке перед инициализацией
Есть ли способ сделать эту работу - или ограничено ли я использованием классов?