首页 > 解决方案 > 类的快速协议扩展链接初始化

问题描述

如果我将以下结构更改为类,如何初始化:-

protocol P {
    init()
    init(str: String)
}

extension P {
    init() {
        self.init(str: "some default")
    }
}

struct S : P {
    var str: String
}

let s = S()
print(s.str) // prints - some default

我尝试添加默认的成员初始化器(更改为类之后):-

class S : P {
    var str: String
    init() {
        self.init(str: String)
    }
}

它显示错误:-错误:类型'S'不符合协议'P'类S:P。还有其他错误。如果我将 struct 更改为 class ,如何完成初始化?

标签: swift

解决方案


只需要指定required非最终类。

如果您了解这些概念可能会有所帮助,Swift 文档会有所帮助。

代码:

class S : P {

    required init() {}
    
    required init(str: String) {}
}

推荐阅读