Swift:带有私有设置方法的公有属性
Swift 可以很方便地创建带有私有设置方法的公有属性。这可以让你的代码更加安全和简洁。 封装封装从根本上意味着类的信息和状态应该对外部类隐藏,只有类自身可以操作。因此,所有的 bug 和 逻辑错误更加不可能发生了。 通常你会使用 例子假设我们想要创建一个代表圆的类,那么圆的半径应该是可以改变的。而且,该圆的面积和直径应该可以从圆的实例中获取,而这两个属性不应该被类本身以外所更改。出于性能考虑,面积和直径也应该只计算一次。 所以这个圆类应该是这样的: class Circle { private var area: Double = 0 private var diameter: Double = 0 var radius: Double { didSet { calculateFigures() } } init(radius:Double) { self.radius = radius calculateFigures() } private func calculateFigures() { area = M_PI * radius * radius diameter = 2 * M_PI * radius } func getArea() -> Double { return area } func getDiameter() -> Double { return diameter } } 现在所有的需求都满足啦。然而,Swift 提供了一种更好的方式,可以使得这段代码更加简洁。 带有私有设置方法的属性通过在属性前面使用 class Circle { private(set) var area: Double = 0 private(set) var diameter: Double = 0 var radius: Double { didSet { calculateFigures() } } init(radius:Double) { self.radius = radius calculateFigures() } private func calculateFigures() { area = M_PI * radius * radius diameter = 2 * M_PI * radius } } 当然也可以为属性设置公有的 public class Circle { public private(set) var area: Double = 0 public private(set) var diameter: Double = 0 public var radius: Double { didSet { calculateFigures() } } public init(radius:Double) { self.radius = radius calculateFigures() } private func calculateFigures() { area = M_PI * radius * radius diameter = 2 * M_PI * radius } } 对象在这个例子中,属性只是
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |