Swift 属性 - 避免对 n 类进行多次声明?

Posted

技术标签:

【中文标题】Swift 属性 - 避免对 n 类进行多次声明?【英文标题】:Swift properties - avoid multiple declarations over n class? 【发布时间】:2015-12-21 11:11:55 【问题描述】:

我在 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 类的扩展,但这不能暗示属性,因为扩展不能容纳它们。

有什么建议吗?

【问题讨论】:

【参考方案1】:

如果您的属性可以计算而不是存储,您可以创建Conditionextension,它为采用您的协议的任何内容提供默认实现。不幸的是,您不能将存储的属性添加到扩展中的类,因此如果简洁对您来说很重要,您可能必须重新构建您的模型。

【讨论】:

以上是关于Swift 属性 - 避免对 n 类进行多次声明?的主要内容,如果未能解决你的问题,请参考以下文章

Swift学习笔记-对象和类

Swift中类和结构体

Swift中的结构体,类,协议,扩展和闭包的用法以及? 和 !的区别

Vue简明实用教程(11)——computed计算属性

Vue简明实用教程(11)——computed计算属性

hibernate框架学习之数据模型-POJO