您的位置:首页 > 移动开发 > Swift

swift学习日志—— 属性

2015-12-28 09:32 274 查看


存储属性

简单来说,一个存储属性就是存储在特定类或结构体的实例里的一个常量或变量。存储属性可以是变量存储属性(用关键字
var
定义),也可以是常量存储属性(用关键字
let
定义)。

可以在定义存储属性的时候指定默认值,请参考默认构造器一节。也可以在构造过程中设置或修改存储属性的值,甚至修改常量存储属性的值,请参考构造过程中常量属性的修改一节。

下面的例子定义了一个名为
FixedLengthRange
的结构体,它描述了一个在创建后无法修改值域宽度的区间:
struct FixedLengthRange {
var firstValue: Int
let length: Int
}
var rangeOfThreeItems = FixedLengthRange(firstValue: 0, length: 3)
// 该区间表示整数0,1,2
rangeOfThreeItems.firstValue = 6
// 该区间现在表示整数6,7,8


FixedLengthRange
的实例包含一个名为
firstValue
的变量存储属性和一个名为
length
的常量存储属性。在上面的例子中,
length
在创建实例的时候被初始化,因为它是一个常量存储属性,所以之后无法修改它的值。


常量结构体的存储属性

如果创建了一个结构体的实例并将其赋值给一个常量,则无法修改该实例的任何属性,即使定义了变量存储属性:
let rangeOfFourItems = FixedLengthRange(firstValue: 0, length: 4)
// 该区间表示整数0,1,2,3
rangeOfFourItems.firstValue = 6
// 尽管 firstValue 是个变量属性,这里还是会报错


因为
rangeOfFourItems
被声明成了常量(用
let
关键字),即使
firstValue
是一个变量属性,也无法再修改它了。

这种行为是由于结构体(struct)属于值类型。当值类型的实例被声明为常量的时候,它的所有属性也就成了常量。

属于引用类型的类(class)则不一样。把一个引用类型的实例赋给一个常量后,仍然可以修改该实例的变量属性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: