Swift编程入门:掌握类和结构体的基础概念

发表时间: 2017-03-21 09:10

在Swift中可以使用完全相同的语法规则来为类和结构体定义属性和添加方法,从而扩展类和结构体的功能。与其他编程语言所不同的是,Swift 并不要求你为自定义类和结构去创建独立的接口和实现文件。你所要做的是在一个单一文件中定义一个类或者结构体,系统将会自动生成面向其他代码的外部接口。

类和结构体对比

Swift 中类和结构体有很多共同点。共同处在于:

  • 定义属性用于存储值

  • 定义方法用于提供功能

  • 定义下标操作使得可以通过下标语法来访问实例所包含的值

  • 定义构造器用于生成初始化值

  • 通过扩展以增加默认实现的功能• 实现协议以提供某种标准功能

与结构体相比,类还有如下的附加功能:

  • 继承允许一个类继承另一个类的特征

  • 类型转换允许在运行时检查和解释一个类实例的类型• 析构器允许一个类实例释放任何其所被分配的资源

  • 引用计数允许对一个类的多次引用

下面是定义结构体和定义类的示例:

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 的存储属性。

生成结构体和类实例的语法类似:

let someResolution = Resolution()

let someVideoMode = VideoMode()

属性访问:

print("The width of someResolution is \(someResolution.width)")

// 打印 "The width of someResolution is 0"

print("The width of someVideoMode is \(
someVideoMode.resolution.width)") // 打印 "The width of someVideoMode is 0"

类和结构体的不同之处

结构体是值类型! 类是引用类型!

结构体和其它编程语言不同点还有,Swift中的结构体是可以定义方法的。C和Objective-C中结构体只能定义属性!

更多关于Swiift类和结构体的内容,请关注我的头条号“最魁获首”,将会视频教程发布!