时间:2021-05-02
类
在 Swift 中类是建立灵活的构建块。类似于常量,变量和函数,用户可以定义的类的属性和方法。Swift给我们提供了声明类,而无需用户创建接口和实现文件的功能。Swift 允许我们创建类作为单个文件和外部接口,将默认在类一次初始化来创建。
使用类的好处:
类和结构的共同特征:
语法
复制代码 代码如下:
定义类
创建一个实例的语法:
let studrecord = student()
示例
class MarksStruct {
var mark: Int
init(mark: Int) {
self.mark = mark
}
}
class studentMarks {
var mark = 300
}
let marks = studentMarks()
println("Mark is \(marks.mark)")
当我们使用 playground 运行上面的程序,我们得到以下结果
访问类属性作为引用类型
类属性可使用 '.' 语法来访问。属性名称由 "." 分离在实例名后。
class MarksStruct {
var mark: Int
init(mark: Int) {
self.mark = mark
}
}
class studentMarks {
var mark1 = 300
var mark2 = 400
var mark3 = 900
}
let marks = studentMarks()
println("Mark1 is \(marks.mark1)")
println("Mark2 is \(marks.mark2)")
println("Mark3 is \(marks.mark3)")
当我们使用 playground 运行上面的程序,得到以下结果
类标识符
在 Swift 引用多个常量和变量指向的单个实例。要了解常量和变量指向一个特定的类实例标识操作符的使用。 类实例总是通过引用传递。在类NSString,NSArray 和 NSDictionary 实例始终分配作为参考传递到现有的实例,而不是使用一个副本。
class SampleClass: Equatable {
let myProperty: String
init(s: String) {
myProperty = s
}
}
func ==(lhs: SampleClass, rhs: SampleClass) -> Bool {
return lhs.myProperty == rhs.myProperty
}
let spClass1 = SampleClass(s: "Hello")
let spClass2 = SampleClass(s: "Hello")
spClass1 === spClass2 // false
println("\(spClass1)")
spClass1 !== spClass2 // true
println("\(spClass2)")
当我们使用 playground 运行上面的程序,得到以下结果
结构体
Swift 提供了利用构造作为结构的灵活的构建块。 通过利用这些结构的一次可以定义构建体的方法和属性。
这不同于 C 和 Objective C 编程:
结构不用要求实现文件和接口。
结构体使我们能够创建一个文件并自动扩展其接口到其它块。
在结构体中的变量值被复制并传递在后续的代码,通过返回的旧值的副本使得这些值不能被改变。
语法
复制代码 代码如下:
结构体的定义
考虑例如,假设要访问包含三个科目记录标记的学生并找出三个科目的总和。在这里,markStruct用于初始化的结构有三个标记,数据类型为 'Int'。
访问结构体及属性
结构的成员是由它的结构名访问。 结构体的实例中由 'let' 关键字进行初始化。
当我们使用 playground 运行上面的程序,得到以下结果:
学生成绩需要访问结构名“studentMarks”。结构成员被初始化为 mark1, mark2, mark3 的整数类型值。然后,结构体 studentMarks()传递给 'marks' 使用 'let' 关键字。 'marks' 将包含结构成员的值。现在通过 '.' 访问结构的初始名称的值,并打印它。
复制代码 代码如下:
struct MarksStruct {
var mark: Int
init(mark: Int) {
self.mark = mark
}
}
var aStruct = MarksStruct(mark: 98)
var bStruct = aStruct // aStruct and bStruct are two structs with the same value!
bStruct.mark = 97
println(aStruct.mark) // 98
println(bStruct.mark) // 97
当我们使用 playground 运行上面的程序,得到以下结果:
结构体最佳使用方式
Swift 语言提供功能来定义的结构体作为自定义数据类型,用于构建功能块。 结构体的实例的值传递给定义块来进一步的操作。
需要有结构:
封装简单的数据值
使用“值”而不是“引用”复制封装数据到它的相关联属性
结构体为 “复制” 和 “引用”
在 swift 中结构体是通过其成员的值,而不是它的引用。
复制代码 代码如下:
struct markStruct{
var mark1: Int
var mark2: Int
var mark3: Int
init(mark1: Int, mark2: Int, mark3: Int){
self.mark1 = mark1
self.mark2 = mark2
self.mark3 = mark3
}
}
var marks = markStruct(mark1: 98, mark2: 96, mark3:100)
println(marks.mark1)
println(marks.mark2)
println(marks.mark3)
当我们使用 playground 运行上面的程序,得到以下结果:
另外一个实例
复制代码 代码如下:
struct markStruct{
var mark1: Int
var mark2: Int
var mark3: Int
init(mark1: Int, mark2: Int, mark3: Int){
self.mark1 = mark1
self.mark2 = mark2
self.mark3 = mark3
}
}
var fail = markStruct(mark1: 34, mark2: 42, mark3: 13)
println(fail.mark1)
println(fail.mark2)
println(fail.mark3)
当我们使用 playground 运行上面的程序,得到以下结果:
结构体 “markStruct” 需要它的成员首先定义:mark1, mark2 和 mark3. 现在,成员类的变量初始化容纳整数值。之后结构成员的副本使用 “self” 关键字创建。当结构成员的副本创建结构体块,其参数标记传递给 'marks' 变量,它现在将保存学生的分数。那么标记打印为 98, 96, 100。 下一步对于相同的结构成员的另一个实例命名为 'fail' 用于指向不同的标记相同结构体的成员。那么标记现在打印为 34, 42, 13. 这清楚地说明了结构会有成员变量的副本,传入成员到它们即将推出的功能块。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一、引言Swift中的类与结构体十分相似,和Objective-C不同的事,Swift中的结构体不仅可以定义属性,也可以像类一样为其定义方法。Swift中的类与
结构体是由一系列具有相同类型或不同类型的数据构成的数据集合,在C语言中,结构体指的是一种数据结构,是C语言中聚合数据类型的一类,结构体可以被声明为变量、指针或数
我们都知道,在C语言中,结构体中的字段都是可以访问的。或者说,在C++中,类和结构体的主要区别就是类中成员变量默认为private,而结构体中默认为public
背景介绍操作系统:CentOS7.3.1611_x64gcc版本:4.8.5什么是结构体?在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数
C语言中调用Swift函数实例详解在Apple官方的《UsingSwiftwithCocoaandObjectgive-C》一书中详细地介绍了如何在Object