我在Swift中定义了以下协议:
protocol Condition {
var column : RepositoryTableColumn! {get set}
var sourceTable : RepositoryTable! {get set}
var conditionalValue : String! {get set}
var preventsClear : Bool! {get set}
func getCondition() -> String
func accept(visitor : ConditionVisitor)
}
协议扩展(现在开始)8个类,这意味着每个类都需要声明:
class IsEqual : Condition {
var column : RepositoryTableColumn!
var sourceTable : RepositoryTable!
var conditionalValue : String!
var preventsClear : Bool!
}
我的问题是,如何避免在每个班级中都有这四个声明?我试图避免这种情况的原因是我不想复制代码,即在这种情况下声明。
对于构造函数,我已经创建了Condition类的扩展,但是这并不意味着属性,因为扩展不能保存它们。
任何建议?
答案 0 :(得分:0)
如果您的属性可以计算而不是存储,则可以创建extension
Condition
,为采用您的协议的任何内容提供默认实现。遗憾的是,您无法将存储的属性添加到扩展中的类,因此如果简洁对您来说很重要,则可能必须重新构建模型。