Swift类和结构体定义-备
Swift中的类和结构体定义的语法是非常相似的。类使用class关键词定义类,使用struct关键词定义结构体,它们的语法格式如下:
class 类名 {
定义类的成员
}
struct 结构体名 {
定义结构体的成员
}
从语法格式上看,Swift中的类和结构体的定义更类似于Java语法,不需要像C++和Objective-C那样把接口部分和实现部分放到不同的文件中。
下面来看一个示例:
- class Employee { //定义的类
- var no: Int = 0
- var name: String = ""
- var job: String?
- var salary: Double = 0
- var dept: Department?
- }
- struct Department { //定义的结构体
- var no: Int = 0
- var name: String = ""
- }
里面定义了一些属性。
Employee和Department是有关联关系的。
下列语句实例化:
- let emp = Employee()
- var dept = Department()
Employee()和Department()是调用它们的构造函数实现实例化。
注意:类声明为let常量还是var变量呢?从编程过程讲类一般声明为let常量,由于类是引用数据类型,声明为let常量只是说明不能修改引用,但是引用指向的对象可以被修改。
类和结构体非常相似,很多情况下没有区别。如果你是设计人员在进行系统设计时候,是将某种类型设计成为类还是结构体?
类和结构体异同:
类和结构体都有如下功能:
定义存储属性
定义方法
定义下标
定义构造函数
定义扩展
实现协议
只有类才有的功能:
能够继承另外一个类
能够核对运行期对象的类型
析构对象释放资源
引用计数允许一个实例有多个引用
选择的原则:
结构体是值类型,每一个实例没有独一无二的标识,下面两个数组实例本质上没有区别,他们可以互相替换。
- var studentList1: [String] = ["张三","李四","王五"]
- var studentList2: [String] = ["张三","李四","王五"]
但是我们提到类时候,它是引用类型,每个实例都有独一无二的标识。我们看看下面员工Employee类代码:
- class Employee {
- var no = 0
- var name = ""
- var job = ""
- var salary = 0.0
- }
- var emp1 = Employee()
- emp1.no = 100
- emp1.name = "Tom"
- emp1.job = "SALES"
- emp1.salary = 9000
- var emp2 = Employee()
- emp2.no = 100
- emp2.name = "Tom"
- emp2.job = "SALES"
- emp2.salary = 9000
emp1和emp2两个员工实例即便内容完全相同,但是这不能说明他们就是同一个员工,只是相似而已。每一个员工实例的背后都有独一无二的标识。
我们再来看看部门Department结构体。
- struct Department {
- var no: Int = 0
- var name: String = ""
- }
- var dept1 = Department()
- dept1.no = 20
- dept1.name = "Research"
- var dept2 = Department()
- dept2.no = 20
- dept2.name = "Research"
Department为什么被设计成为结构体而不是类呢,那要看我们对于两个不同部门的理解是什么,如果具有相同的部门编号(no)和部门名称(name),我们就认为他们是两个相同的部门,那么就可以把Department定义为结构体,这一点与员工Employee不同。
Swift类和结构体定义-备的更多相关文章
- 《从零开始学Swift》学习笔记(Day 25)——类和结构体定义
原创文章,欢迎转载.转载请注明:关东升的博客 Swift中的类和结构体定义的语法是非常相似的.类使用class关键词定义类,使用struct关键词定义结构体,它们的语法格式如下: class 类名 { ...
- swift 类和结构体
1:类和结构体定义 类和结构体分别通过关键字class 和struct定义. swift的编码风格是类class和结构体struct名字使用大写字母开头的匈牙利表示法,相反的.类的方法和属性则用小写字 ...
- swift 类 与 结构体
这两天突然有人问我 swift里面 类和 结构体 有什么区别? 说实在的本人目前不太看好swift,相信很多人也是,oc 都 很成熟了. 本人目前不打算深入了解swift的原因swift 语言 ...
- Swift类与结构体
类和结构体有很多共性: 定义属性存储数据 定义方法执行功能处理 定义下标,通过下标访问他们的值 初始化他们的状态 通过扩展(Extension)扩展其功能 遵守协议(Protocol),协议提供一种特 ...
- Swift 类和结构体的简单认识
类和结构体的共同点: 定义属性用于存储值 定义方法用于提供功能 定义附属脚本用于访问值 通过拓展增加默认实现的功能 定义构造器用于生成初始化值 实现协议以提供某种标准功能 类是引用类型 结构体是值类型 ...
- Swift: 类与结构体
对比类与结构体 类与结构体有许多的相同点,它们都可以: 定义属性来存储值: 定义方法来提供功能: 定义下标操作: 定义初始化函数: 扩展它的默认的实现: 遵从协议: 类有一些额外的能力,但是结构体没有 ...
- Swift类和结构体
在C++中,相信不会有太多人去详细考究结构体和类的区别,因为二者关系实在不大.但在Swift中,结构体和类的关系非常大,它们的组成部分都包括:初始化器.实例方法.实例属性.类型属性.类型方法等等:二者 ...
- Swift - 类和结构体的区别
类和结构体有许多相同之处,也有许多不同之处. 二者区别如下: 1,类可以继承和扩展,结构体不可以 2,可以让一个类的实例来反初始化,释放存储空间,结构体做不到 3,类的对象是引用类型,而结构体是值类型 ...
- swift 学习- 10 -- 类和结构体
// '类和结构体' 是人们构建代码所使用的一种通用且灵活的构造体, 我们可以使用完全相同的语法规则来为 '类和结构体' 定义属性 (变量 和 常量) 和添加方法, 从而扩展 类和结构体 的功能 // ...
随机推荐
- 用PYTHON实现将电脑里的所有文件按大小排序,便于清理
嘿嘿,慢慢找到写代码的感觉了. 这个小程序涉及的东东还是很多的,数据结构的设计,错误的处理,快速字典排序,文件数值调整.... import os,os.path import glob SUFFIX ...
- [LeetCode 115] - 不同子序列(Distinct Subsequences)
问题 给出字符串S和T,计算S中为T的不同的子序列的个数. 一个字符串的子序列是一个由该原始字符串通过删除一些字母(也可以不删)但是不改变剩下字母的相对顺序产生的一个新字符串.如,ACE是ABCDE的 ...
- MCS51浮点计算程序
MSC-51 3字节和4字节浮点数计算程序,主要用于数据采集及上传,经过IEEE转换,在上位机直接显示. ;这是本人使用的MSC-51 3字节和4字节浮点数计算程序,主要用于数据采集及上传,经过IEE ...
- eclipse中格式化代码快捷键Ctrl+Shift+F失效的解决办法
很长一段时间我的eclipse都有个毛病,就是当我要格式化代码的时候,右键-source-format能够起效,但ctrl+shift+f不好使了. 可以基本断定是快捷键与别的软件冲突了,但一直也没时 ...
- 零基础学习云计算及大数据DBA集群架构师【Linux系统\网络服务及安全配置2015年1月8日周五】
考试考一天,得分94,最后一题防火墙当时还没搞明白 考题如下: 注意事项: .确保在重启主机后所有配置仍然生效. .selinux 必须为Enforing 模式,防火墙必须开始.默认策略必须清空. . ...
- Chrome Browser
set default search engine as follow for force encrypted searching: https://encrypted.google.com/sear ...
- 自动生成 Lambda查询和排序,从些查询列表so easy
如下图查询页面,跟据不同条件动态生成lambda的Where条件和OrderBy,如果要增加或调整查询,只用改前台HTML即可,不用改后台代码 前台代码: <div style="pa ...
- Java NIO框架Netty教程(一) – Hello Netty
先啰嗦两句,如果你还不知道Netty是做什么的能做什么.那可以先简单的搜索了解一下.我只能说Netty是一个NIO的框架,可以用于开发分布式的Java程序.具体能做什么,各位可以尽量发挥想象.技术,是 ...
- (转)SQL Server 2008将数据导出为脚本 [SQL Server]
之前我们要将一个表中的数据导出为脚本,那么只有在网上找一个导出数据的Script,然后运行就可以导出数据脚本了.现在在SQL Server 2008的Management Studio中增加了一个新特 ...
- Android Log日志文件的分析、查看
Log 在android中的地位非常重要,要是作为一个android程序员不能过分析log这关,算是android没有入门吧 . 下面我们就来说说如何处理log文件 什么时候会产生log文件呢 ?一般 ...