结构体:
结构体是用于封装不同或相同类型的数据的
Swift中的结构体是一类类型, 可以定义属性和方法(甚至构造方法和析构方法等)
格式:
struct 结构体名称 {
结构体属性和方法
struct 结构体名称 {
结构体属性和方法
}
struct Rect {
var Double = 0.0
var height:Double = 0.0
}
var Double = 0.0
var height:Double = 0.0
}
如果结构体的属性有默认值, 可以直接使用()构造一个结构体
如果结构体的属性没有默认值, 必须使用逐一构造器实例化结构体
var r = Rect()
print("width = (r.width) height = (r.height)")
输出结果: width = 0.0 height = 0.0
结构体属性的访问使用.语法
var r = Rect()
r.width = 100
r.height = 99
r.height = 99
print("width = (r.width) height = (r.height)")
输出结果: width = 100.0 height = 99.0
结构体构造器
Swift中的结构体和类跟其它面向对象语言一样都有构造函数, 而OC是没有的
Swift中的结构体和类跟其它面向对象语言一样都有构造函数, 而OC是没有的
Swift要求实例化一个结构体或类的时候,所有的成员变量都必须有初始值,
构造函数的意义就是用于初始化所有成员变量的, 而不是分配内存, 分配内存是系统帮我们做的.
如果结构体中的所有属性都有默认值, 可以调用()构造一个结构体实例
如果结构体中的属性没有默认值, 可以自定义构造器, 并在构造器中给所有的属性赋值
如果结构体中的属性没有默认值, 可以自定义构造器, 并在构造器中给所有的属性赋值
其实结构体有一个默认的逐一构造器, 用于在初始化时给所有属性赋值
struct Rect2 {
var Double
var height:Double = 0.0
var Double
var height:Double = 0.0
}
逐一构造器
var r1 = Rect2( 10.0, height: 10.0);
错误写法, 顺序必须和结构体中成员的顺序一致
var r1 = Rect2(height: 10.0, 10.0);
错误写法, 必须包含所有成员
var r1 = Rect2(height: 10.0);
结构体中定义成员方法
在C和OC中结构体只有属性, 而Swift中结构体中还可以定义方法
struct Rect {
var Double
var Double
var height:Double = 0.0
给结构体定义一个方法, 该方法属于该结构体
结构体中的成员方法必须使用某个实例调用
成员方法可以访问成员属性
func getWidth() -> Double{
return width
}
}
return width
}
}
var r = Rect( 10.0, height: 20.0)
结构体中的成员方法是和某个实例对象绑定在一起的,
所以谁调用, 方法中访问的属性就属于谁
print(r.getWidth())
输出结果: 10.0
var r1 = Rect( 30.0, height: 20.0)
print(r1.getWidth())
输出结果: 30.0
结构体是值类型
struct Rect {
var Double
var height:Double = 0.0
func show() -> Void{
print("width = (width) height = (height)")
}
}
var r1 = Rect( 10.0, height: 10.0)
var r2 = r1
r1.show()
r2.show()
var Double
var height:Double = 0.0
func show() -> Void{
print("width = (width) height = (height)")
}
}
var r1 = Rect( 10.0, height: 10.0)
var r2 = r1
r1.show()
r2.show()
r1.width = 20.0
结构体是值类型, 结构体之间的赋值其实是将r1中的值完全拷贝一份到r2中,
所以他们是两个不同的实例
r1.show()
r2.show()
输出结果:
width = 10.0 height = 10.0
width = 10.0 height = 10.0
width = 20.0 height = 10.0
width = 10.0 height = 10.0
width = 20.0 height = 10.0
width = 10.0 height = 10.0