swift基础笔记4-类和结构体
类和结构体对比类和结构体是人们构建代码所用的一种通用且灵活的构造体。我们可以使用完全相同的语法规则来为类和结构体 类和结构体对比Swift 中类和结构体有很多共同点。共同处在于: 与结构体相比,类还有如下的附加功能: 定义类和结构体有着类似的定义方式。我们通过关键字 class 和 struct 来分别表示类和结构体,并在一对大括号中定 义它们的具体内容 struct Resolution { var width = 0 var height = 0
}
class VideoMode {
var resolution = Resolution() var interlaced = false
var frameRate = 0.0
var name: String?
}
示例说明:在上面的示例中我们定义了一个名为 Resolution 的结构体,用来描述一个显示器的像素分辨率。这个结构体包含 了两个名为 width 和 height 的存储属性。存储属性是捆绑和存储在类或结构体中的常量或变量。当这两个属性 被初始化为整数 0 的时候,它们会被推断为 Int 类型。 类和结构体实例生成结构体和类实例的语法非常相似: 属性访问通过使用点语法(dot syntax),你可以访问实例中所含有的属性,具体不多说了,应该都知道。示例: 结构体类型的成员逐一构造器所有结构体都有一个自动生成的成员逐一构造器,用于初始化新结构体实例中成员的属性。新实例中各个属性的 结构体和枚举是值类型值类型被赋予给一个变量、常量或者本身被传递给一个函数的时候,实际上操作的是其的拷贝。 类是引用类型与值类型不同,引用类型在被赋予到一个变量、常量或者被传递到一个函数时,操作的是引用,其并不是拷贝。因此,引用的是已存在的实例本身而不是其拷贝。具体不多说 struct Resolution {
var width = 0
var height = 0
}
class VideoModel {
var resolution = Resolution()
var interlaced = false
var frameRate = 0.0
var name:String?
}
func objectDemoWithClassAndStructe(){
//1 实例定义
var someResolution = Resolution()
let someVideoModel = VideoModel()
print(someVideoModel)
//2 属性访问
someResolution.width = 320
//3 结构体类型的成员逐一构造器
let newResolution = Resolution(width: 320,height: 480)
print(newResolution) //Resolution(width: 320,height: 480)
//4 结构体是值类型
var copyResolution = newResolution
copyResolution.height = 560
print(newResolution) //Resolution(width: 320,height: 480)
print(copyResolution)//Resolution(width: 320,height: 560)
//5 类是引用类型
let originVidelModel = VideoModel()
originVidelModel.resolution = someResolution
print(originVidelModel.resolution)
let copyVideoModel = originVidelModel
copyVideoModel.resolution = newResolution
print(originVidelModel.resolution)
print(copyVideoModel.resolution)
if originVidelModel === copyVideoModel {
print("originVidelModel and copyVideoModel has the same VideoModel instance")
}
//print:originVidelModel and copyVideoModel has the same VideoModel instance
}
指针 类和结构体的选项在你的代码中,你可以使用类和结构体来定义你的自定义数据类型 字符串,数组和字典的赋值与复制Swift 中 ? ? 和 字典(Dictionary) 类型均以结构体的形式实现。这意味着String,Array,Dictionary类型数据被赋值给新的常量或变量,或者被传入函数或方法中时,它们的值会发生拷贝行 为(值传递方式)。 swift初学,留下笔记,不喜勿喷,欢迎交流 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |