簡體   English   中英

協議willSet和didSet

[英]Protocols, willSet and didSet

class TriangleAndSquare {
    var triangle: EquilateralTriangle {
        willSet {
            square.sideLength = newValue.sideLength
        }
    }
    var square: Square {
        willSet {
            triangle.sideLength = newValue.sideLength
        }
    }
    init(size: Double, name: String) {
        square = Square(sideLength: size, name: name)
        triangle = EquilateralTriangle(sideLength: size, name: name)
    }
}
var triangleAndSquare = TriangleAndSquare(size: 10, name: "another test shape")
print(triangleAndSquare.square.sideLength)
print(triangleAndSquare.triangle.sideLength)
triangleAndSquare.square = Square(sideLength: 50, name: "larger square")
print(triangleAndSquare.triangle.sideLength)

快速的協議就像Java中的接口? 誰能解釋我上面示例中的willSet和didSet到底做什么?

1.物業觀察員

  • 當屬性值即將更改時,將調用willSet代碼。
  • 另一方面,當屬性值剛剛更改時, didSet會被調用。

2.協議

如果可以幫助您,您可以認為協議就像接口一樣,但是您可能希望觀看WWDC視頻“面向協議的編程”,以了解協議在實踐中是如何使用的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM