struct Point {
var x: Int
var y: Int = 1
var z: Int?
}
struct Point1 {
var x: Int
var y: Int
init() {
x = 0
y = 0
}
}
struct Point2 {
var x: Int
var y: Int
init(x: Int, y: Int) {
self.x = x
self.y = y
}
}
类
类的定义与结构体类似,但编译器没有生成可以传入成员值得初始化器
类的所有成员在定义时指定了初始值,编译器会生成无参的初始化器,成员的初始化在这个初始化器中完成
结构体与类的区别
结构体是值类型(枚举也是),类是引用类型(指针类型)
值类型
值类型给 let、var 赋值或者给函数传参时,是直接将所有内容拷贝一份,属于深拷贝
Swift 标准库中为了提升性能,String、Array、Dictionary、Set 采取 Copy On Write 的技术(仅当有"写"的操作时才会真的进行拷贝操作)