Swift学习之类和结构体

类和结构体

struct Resolution {
    var width = 0
    var height = 0
}

class VideoModel {
    var resolution = Resolution()
    var interlaced = false
    var frameRate = 0.0
    var name:String?
}

//结构体自动的提供了成员逐一构造器
let resolution = Resolution(width: 1, height: 9)
print("\(resolution.width)") //1
//结构体、枚举都是值类型,赋值的时候都会复制 指向的都不是同一个地址
var hd = resolution
hd.width = 100
print(hd.width) //100


let videoModel = VideoModel()

videoModel.resolution = resolution
videoModel.interlaced = true
videoModel.frameRate = 1080
videoModel.name = "星球大战"
print("\(videoModel.name),\(videoModel.resolution),\(videoModel.interlaced),\(videoModel.frameRate)") //Optional("星球大战"),Resolution(width: 1, height: 9),true,1080.0

//类是引用类型,当将一个实例赋给另外一个实例的时候,这两个实例指向的是同一块内存地址
var tenEnty = videoModel
print(tenEnty.frameRate) //1080
tenEnty.frameRate = 2160
print(tenEnty.frameRate) //2160.0

if tenEnty === videoModel{
    print("tenEnty is equal to videoModel") //tenEnty is equal to videoModel
}
if tenEnty !== videoModel{
    print("tenEnty is not equal to videoModel")
}

//同样的 字符串、数组、字典也是引用类型,它们在赋值或者被 传入函数或者方法的时候都不会发生值拷贝,而是发生现有实例的引用

你可能感兴趣的:(Swift,学习记录,swift)