我在 Swift 中定义了以下协议(protocol):
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)
}
协议(protocol)扩展了(目前)8 个类,这意味着每个类都需要有一个声明:
class IsEqual : Condition {
var column : RepositoryTableColumn!
var sourceTable : RepositoryTable!
var conditionalValue : String!
var preventsClear : Bool!
}
我的问题是,如何避免每个类中都有这四个声明?我试图避免这种情况的原因是我不想重复代码,即在本例中是声明。
对于构造函数,我创建了 Condition 类的扩展,但这不能暗示属性,因为扩展无法保存它们。
有什么建议吗?
最佳答案
如果您的属性可以计算而不是存储,您可以创建 Condition
的扩展
,为采用您的协议(protocol)的任何内容提供默认实现。不幸的是,您无法将存储的属性添加到扩展中的类中,因此如果简洁对您来说很重要,您可能必须重新构建模型。
关于xcode - Swift 属性 - 避免对 n 个类进行多个声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34394315/