在 Swift 中实现协议一致性时,我有两个选择,具有相同的最终结果:
-
在类中实现协议- 也就是说,在类定义的顶部声明一致性,并将实现放在类体内,或者
-
在扩展中实现协议- 也就是说,完全在类之外编写符合协议的代码。
这是一个例子:
public class MyClass : CustomDebugStringConvertible {
... // Something
public var debugDescription : String {
return "MyClass"
}
}
vs.
class MyClass {
... // Something
}
extension MyClass : CustomDebugStringConvertible {
public var debugDescription: String {
return "MyClass"
}
}
Swift 书籍中的代码示例往往集中于第一种方法;苹果的Swift核心源代码 https://github.com/apple/swift/tree/master/stdlib/public/core表明他们只使用第二种方法(参见Bool
and Optional
举个例子)。
是否有一种合理的方法可以根据情况在两种方法之间做出选择,或者这只是编码偏好的问题?
这更多的是编码偏好和可读性的问题。如果您认为您的类将会很大,那么在扩展中实现它可能更有意义,这样它的方法就不会给您的类带来混乱。如果是短期课程,我会说all in one,因为可读性影响较小。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)