首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >协议、willSet和didSet

协议、willSet和didSet
EN

Stack Overflow用户
提问于 2015-12-12 17:30:57
回答 1查看 972关注 0票数 2
代码语言:javascript
复制
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到底是什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-12 18:13:39

1.财产观察员

  • 当属性值即将更改时,将调用willSet中的代码。
  • 另一方面,当一个属性值刚刚被更改时,didSet就会被调用。

2.议定书

如果协议对您有帮助,您可以将其看作是类似于接口的协议,但您可能希望使用观看WWDC视频“面向协议的编程”。来查看协议在实践中是如何使用的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34242861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档