我有两个选择实现当斯威夫特协议一致性,具有相同的最终结果:在哪里实现Swift协议?
- 实现类内的协议 - 即状态一致性的类定义的顶部,并把实施在课堂内部,或者
- 在扩展中实现协议 - 即在整个课程之外完成代码协议一致性。
下面是一个例子:
public class MyClass : CustomDebugStringConvertible {
... // Something
public var debugDescription : String {
return "MyClass"
}
}
与在夫特书籍
class MyClass {
... // Something
}
extension MyClass : CustomDebugStringConvertible {
public var debugDescription: String {
return "MyClass"
}
}
代码样本往往集中在第一种方法; Apple's source code of Swift core显示它们仅使用第二种方法(例如,参见Bool
和Optional
)。
视情况而定,两种方法之间是否有合适的方法来决定,还是仅仅是编码偏好问题?
这完全是一个偏好问题,因此是一个意见问题。就我个人而言,我几乎总是做后者,但并非总是如此。另请参阅我对扩展的评论:http://www.apeth.com/swiftBook/ch04.html#_extending_object_types – matt