14 Swift 结构体
2017-07-05 本文已影响65人
猴子的救兵520
结构体的介绍
- 概念介绍
- 结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合
- 结构体(struct)指的是一种数据结构
- 结构体是值类型,在方法中传递时是值传递
- 结构的定义格式
struct 结构体名称 {
// 属性和方法
}
结构体的增强
- 扩充构造函数
- 默认情况下创建Location时使用Location(x: x值, y: y值)
- 但是为了让我们在使用结构体时更加的灵活,swift还可以对构造函数进行扩充
- 扩充的注意点
- 在扩充的构造函数中必须保证成员变量是有值的
- 扩充的构造函数会覆盖原有的构造函数
struct Location {
var x : Double
var y : Double
init(x : Double, y : Double) {
self.x = x
self.y = y
}
init(xyString : String) {
let strs = xyString.components(separatedBy: ",")
x = Double(strs.first!)!
y = Double(strs.last!)!
}
}
let location = Location(x: 100, y: 100)
let location1 = Location(xyString: "101,101")
- 为结构体扩充方法
- 为了让结构体使用更加灵活,swift的结构体中可以扩充方法
- 例子:为Location结构体扩充两个方法
- 向水平方向移动的方法
- 向垂直方向移动的方法
struct Location {
var x : Double
var y : Double
init(x : Double, y : Double) {
self.x = x
self.y = y
}
init(xyString : String) {
let strs = xyString.components(separatedBy: ",")
x = Double(strs.first!)!
y = Double(strs.last!)!
}
mutating func moveH(x : Double) {
self.x += x
}
mutating func moveV(y : Double) {
self.y += y
}
}
var location = Location(x: 100, y: 100)
print(location) // Location(x: 100.0, y: 100.0)
location.moveH(x: 30)
location.moveV(y: -10)
print(location) // Location(x: 130.0, y: 90.0)
- 注意:
- 如果我们使用的 Location 不是自己定义的,但是我们仍旧希望在自己的项目里扩展 Location 的操作
- Swift 也能帮我们达成,这个机制,叫做 extension
extension Location {
mutating func moveH(x : Double) {
self.x += x
}
mutating func moveV(y : Double) {
self.y += y
}
}
- 系列文章
01 Swift最基本的语法变化
02 Swift中的变量和常量
03 Swift中的数据类型
04 Swift逻辑分支
05 Swift中的循环
06 Switf中的字符串
07 Swift 数组
08 Swift字典
09 Swift 元组
10 Swift 可选类型
11 Swift 类型转化
12 Swift 函数
13 Swift 枚举类型
14 Swift 结构体
15 Swift 类的定义
16 Swift 类的构造函数
17 Swift 类的析构函数
18 自动引用计数
19 Swift 可选链
20 协议
21 闭包
22 Swift 懒加载
23 Swift 注释