/**
结构体是值类型
结构体不仅可以拥有属性,也可以有方法
*/
struct Rect {
// 结构体成员变量
var width: Double = 5.0
var height: Double = 6.0
// 结构体的成员方法, 可以访问使用成员属性。
func getWidth() -> Double {
return width
}
func show() -> Void {
print("width\(width)")
}
}
var rect1: Rect = Rect.init(width: 9.0, height: 9.0)
// 每一个成员方法都必须依赖于某一个具体的对象。
let width = rect1.getWidth()
print(width)
print("---------------->")
rect1.show()
var rect2: Rect = Rect.init(width: 23.0, height: 33.0)
print("---------------->")
print("rect2==\(rect2)")
/**
// 还可以这样子 直接赋值。 那么rect2 rect1内容完全一样。
(1)rect2 rect1 指向同一块内存
(2)rect2 rect1 是两个不同的实例,但是内容一致。
是将rect1的内容完全赋给了rect2,而不是让rect2指向rect1.
所以结构体不是引用,而是值类型。
*/
rect2 = rect1
print("---------------->")
print("rect2==\(rect2)")
/**
如果是引用的话,我修改了 rect1的宽度,那么rect2的宽度也会改变
但是我们这里看到rect2的宽度没有改变
*/
rect1.width = 100.0
print("---------------->")
print("rect1==\(rect1)")
print("rect2==\(rect2)")