Swift Programming: getter/setter in stored property

前端 未结 5 2046
夕颜
夕颜 2020-12-28 11:35

How do I overwrite the setter of stored property in Swift?

In Obj-C, I can overwrite its setter, but Swift doesn\'t seem to be happy about getter/setters being used

5条回答
  •  春和景丽
    2020-12-28 11:59

    Simplified Example:

    class Shape {
        var sideLength: Double {
        get {
            return self.sideLength
        }
        set {
            // Implement the setter here.
            self.sideLength = newValue
        }
        }
    }
    

    Full example

    Check out perimeter in this example.

    Excerpt From: Apple Inc. “The Swift Programming Language.” iBooks. https://itun.es/us/jEUH0.l

    class EquilateralTriangle: NamedShape {
        var sideLength: Double = 0.0
    
        init(sideLength: Double, name: String) {
            self.sideLength = sideLength
            super.init(name: name)
            numberOfSides = 3
        }
    
        var perimeter: Double {
        get {
            return 3.0 * sideLength
        }
        set {
            sideLength = newValue / 3.0
        }
        }
    
        override func simpleDescription() -> String {
            return "An equilateral triagle with sides of length \(sideLength)."
        }
    }
    var triangle = EquilateralTriangle(sideLength: 3.1, name: "a triangle")
    triangle.perimeter
    triangle.perimeter = 9.9
    triangle.sideLength”
    

提交回复
热议问题