- Struct介绍
Struct是一种Value Type的资料类型。值类型
有静态的空间和实例的空间
在这些空间里面像平常一样建立变数(属性)和function(方法),但他们需要透过对应的空间存取。
主要用来包装资料和整理code。
可以conforms to Protocol。
- 建立Struct
通过关键字Struct声明。
惯用大驼峰命名。
在后方的大括号内的区域定义属性和方法。
- 设定属性
在类型内建立的变数是实例的属性,只能透过实例存取。
在实例被建立前 ,所以不需要先赋值。
用let的话,建立后就不能更改。
- 设定方法
在类型内建立的function是实例的方法,只能透过实例存取。
可以直接存取实例的属性。
如果要从方法修改属性,需要标记方法是mutating
- 设定静态属性&方法
在属性和方法前面加上static就变成静态的。
静态不需要实例,它属于类型本身,也就是程序一启动就存在了。
可以直接存取自己的静态属性。
- 类型里的Self & self
self表示自己,通常会省略。
Self表示自己的类型。
- 预设启动方式
Struct会自动根据预设的资料建立启动方式,用属性名称作为引数名称。
可以省略已经有预设值的属性。
- 自定启动方式
可以透过init自己定义启动方式,写法和function一样。
必须在init的的block之中赋值给所有没有预设值、不是Optional的属性。
init是mutating的。
自己定义init后不会保留自动产生的。
- 私有属性
在属性前加上private,这个属性就不能从外部存取。
private属性无法产生预设启动,需要自己写init,或是用let设定固定的预设值。
属性可以被get(读取)和set(写入)。
设定写入的部分私有,让外部依然能够读取,但不能修改。
- conforms to Protocol
在定义类型名称的后面加上冒号和想加入的Procotol。
用逗点区分多个Protocol。
需要在struct的定义中加入规范的属性或方法。