前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Swift入门:属性

Swift入门:属性

作者头像
韦弦zhy
发布2020-03-19 20:47:11
5490
发布2020-03-19 20:47:11
举报
\color{red}{\Huge \mathtt{SWIFT}}
\color{red}{\Huge \mathtt{SWIFT}}
\color{orange}{\Large \mathbf{属性}}
\color{orange}{\Large \mathbf{属性}}
\underline{\color{#3399CC}{\large \mathit{Properties}}}
\underline{\color{#3399CC}{\large \mathit{Properties}}}

结构体和类(统称为“类型”)可以有自己的变量和常量,这些称为属性。这些方法允许您将值附加到类型以唯一地表示它们,但因为类型也可以有方法,所以您可以让它们根据自己的数据进行操作。

现在我们来看一个例子:

struct Person {
    var clothes: String
    var shoes: String

    func describe() {
        print("I like wearing \(clothes) with \(shoes)")
    }
}

let taylor = Person(clothes: "T-shirts", shoes: "sneakers")
let other = Person(clothes: "short skirts", shoes: "high heels")
taylor.describe()
other.describe()

如您所见,当您在方法中使用属性时,它将自动使用属于同一对象的值。

属性观察者

Swift允许您添加要在属性即将更改或已更改时运行的代码。例如,这通常是在值更改时更新用户界面的好方法。

有两种属性观察者:willSetdidSet,它们在属性更改之前或之后调用。在willSet中,Swift为代码提供一个名为newValue的特殊值,该值包含新属性值将是什么,在didSet中,给您一个oldValue来表示前一个值。

让我们将两个属性观察者附加到Person结构的clothes属性:

struct Person {
    var clothes: String {
        willSet {
            updateUI(msg: "I'm changing from \(clothes) to \(newValue)")
        }

        didSet {
            updateUI(msg: "I just changed from \(oldValue) to \(clothes)")
        }
    }
}

func updateUI(msg: String) {
    print(msg)
}

var taylor = Person(clothes: "T-shirts")
taylor.clothes = "short skirts"

这将打印出“I'm changing from T-shirts to short skirts”和“I just changed from T-shirts to short skirts.”的信息

计算属性

可以创建实际上是幕后代码的属性。例如,我们已经使用了字符串的uppercased()方法,但也有一个名为capitalized的属性根据需要进行计算,而不是每个字符串总是存储其自身的大写版本。

若要生成计算属性,请在属性后放置一个大括号,然后使用“get”或“set”在适当的时间执行操作。例如,如果我们想添加一个自动返回一个人的年龄乘以7的ageInDogYears属性,我们将执行以下操作:

struct Person {
    var age: Int

    var ageInDogYears: Int {
        get {
            return age * 7
        }
    }
}

var fan = Person(age: 25)
print(fan.ageInDogYears)

计算属性在苹果的代码中越来越常见,但在用户代码中却不太常见。

注意:如果您只打算将它们用于读取数据,则可以完全删除get部分,如下所示:

var ageInDogYears: Int {
    return age * 7
}

本文来自Hacking with Swift 给 swift 初学者的入门课程 Swift for Complete Beginners Properties

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 属性观察者
  • 计算属性
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档