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)则不一样。把一个引用类型的实例赋给一个常量后,仍然可以修改该实例的变量属性。
相关文章推荐
- 《从零开始学Swift》学习笔记(Day 53)——do-try-catch错误处理模式
- Swift基础语法的学习
- Swift  循环语句
- Swift 分支语句
- Swift 字典
- Swift中避免重载的final修饰符
- CALayer Tutorial: Getting Started
- Swift - 访问控制(private,internal,public)
- Swift动态添加UIImageView并添加事件
- 用Swift实现一个弹性动画
- Swift 字符串
- [Swift]:快速学习笔记5 扩展和泛型
- [Swift]:快速学习笔记4 ARC和循环引用
- Library not loaded: @rpath/libswiftCore.dylib
- 02-Swift学习笔记-元组类型
- swift 基础2
- swift 基础1
- 25.SwiftyJSON转换JSON的注意
- 23.使用Swift自带的join函数拼接字符串
- Swift之从xls文件读取数据