美文网首页
十.属性/Properties

十.属性/Properties

作者: kodbin | 来源:发表于2017-11-04 17:48 被阅读9次

属性将值与特定的类,结构或枚举关联。存储的属性存储常量和变量值作为实例的一部分,而计算属性计算(而不是存储)值。计算属性由类,结构和枚举提供。存储的属性仅由类和结构提供

1.存储属性

在最简单的形式中,存储属性是一个常量或变量,作为特定类或结构的实例的一部分存储。存储的属性可以是变量存储的属性(由var关键字引入)或常量存储的属性(由let关键字引入)

一个可变属性,一个不可变属性

FixedLengthRange具有被调用的变量存储属性的实例和被称为firstValue的常量存储属性length。在上面的例子中,length的范围被创建时被初始化,之后不能被改变,因为它是一个常量属性

2.常量结构实例的存储属性

如果您创建了一个结构的实例并将该实例分配给一个常量,那么即使它们被声明为变量属性,也不能修改该实例的属性

值类型且为let,不能改变属性

因为rangeOfFourItems被声明为一个常量(使用let关键字),所以不可能改变它的firstValue属性,即使它firstValue是一个变量属性。

结构体是值类型。当一个值类型的实例被标记为一个常量时,它的所有属性也是如此。

对于引用类型的类。如果将引用类型的实例分配给常量,则仍然可以更改该实例的变量属性

3.懒加载

关键字:lazy ,前面加lazy,初始化不会被创建,而是等到被用到

必须将延迟存储属性声名为变量(var),因为属性的初始值可能在实例构造完之后才会创建。但是常量属性在构造过程中必须要有初始值,所以没有办法声名成延迟属性。

懒--存储属性

4.计算属性

center就是计算属性 结果

5.只读计算属性

具有getter但没有setter的计算属性被称为只读计算属性。只读计算属性总是返回一个值,可以通过点语法访问,但不能设置为不同的值

注意:您必须将计算属性(包括只读计算属性)声明为具有var关键字的变量属性,因为它们的值不是固定的。该let关键字仅用于恒定的特性,以表明一旦它们被设置为实例的初始化的一部分,不能改变它们的值

只读属性

6.属性观察者

属性观察员观察并回应物业价值的变化。每次属性值设置时都会调用属性观察器,即使新值与属性的当前值相同。

willset跟didset

newTotalSteps与oldValue是默认值

7.类

属性

实例属性是属于特定类型实例的属性。每次创建该类型的新实例时,它都有自己的一组属性值,与其他任何实例都是分开的。

您也可以定义属于类型本身的属性,而不是该类型的任何一个实例。只会有这些属性的副本,不管你创建了多少个这种类型的实例。这些属性称为类型属性

类型属性static 访问,修改

例子2:

应用 调用

以上是教程中的例子,演示类属性与实例属性的配合使用

总结:类本身也是一个对象,定义了该类型的一些基本"特征",本质也是一个对象,所以它也可以有自己的属性,只是它不用创建,不需实例调用,这个特性Python也有

相关文章

网友评论

      本文标题:十.属性/Properties

      本文链接:https://www.haomeiwen.com/subject/hlgfmxtx.html