Swift 类和结构体的简单认识
类和结构体的共同点:
- 定义属性用于存储值
- 定义方法用于提供功能
- 定义附属脚本用于访问值
- 通过拓展增加默认实现的功能
- 定义构造器用于生成初始化值
- 实现协议以提供某种标准功能
- 类是引用类型 结构体是值类型
类相对于结构体多出的附加功能:
- 继承允许一个类继承另一个类的特征
- 类型转换允许在运行时检查和解释一个类实例的类型
- 解构器允许一个类实例释放任何其所被分配的资源
- 引用计数允许对一个类的多次引用
类的定义:
class CustomClass { // 声明一个类 一般命名都是大写开头 如:String Array
// 可以在这里声明属性和方法
var name: String?
let orderCount = 100
let isBasic = true
}
结构体的定义:
struct CustomStruct { // 声明一个结构体 命名方式与类一样
// 可以在这里声明属性和方法
var width = 100.0
var height = 50.0
}
实例化:
类和结构体的实例化方法很相似,以下代码分别生成结构体和类的实例,调用的都是默认构造器
let someClass = CustomClass()
var someStruct = CustomStruct()
与类不同的是结构体默认拥有逐一构造器,可以方便的设置属性的值
var secondStruct = CustomStruct(width: 50.0, height: 91.0)
属性操作:
类和结构体都可以使用.(点语法)进行属性的操作
someClass.name = "order1"
print("print someClass name \(someClass.name)")
// 打印 print someClass name Optional("order1") <因为name属性是可空类型 所以会打印出 Optional("order1")> someStruct.height = 100.0
print("print someStruct width:\(someStruct.width) and height:\(someStruct.height)")
// 打印出 print someStruct width:100.0 and height:100.0 <因为width在声明CustomStruct的时候就已经给了默认值 所以值为100.0>
恒等运算符:
恒等运算符的作用是比较两个变量是否引用的是同一个实例,因为类是引用类型。然而结构体却不需要,因为结构体在每次赋值或者通过传参的时候都会发生拷贝(值类型特性)。"==="代表等价于 "!=="代表不等价
var secondClass = CustomClass()
var thirdClass = someClass if thirdClass !== secondClass {
print("引用的不是同一个实例")
} if someClass === thirdClass {
print("引用的是一个实例")
}
这次是对结构体和类的简单认识,之后会记录具体使用的笔记以供备忘
Swift 类和结构体的简单认识的更多相关文章
- swift 类 与 结构体
这两天突然有人问我 swift里面 类和 结构体 有什么区别? 说实在的本人目前不太看好swift,相信很多人也是,oc 都 很成熟了. 本人目前不打算深入了解swift的原因swift 语言 ...
- Swift类和结构体
在C++中,相信不会有太多人去详细考究结构体和类的区别,因为二者关系实在不大.但在Swift中,结构体和类的关系非常大,它们的组成部分都包括:初始化器.实例方法.实例属性.类型属性.类型方法等等:二者 ...
- swift 类和结构体
1:类和结构体定义 类和结构体分别通过关键字class 和struct定义. swift的编码风格是类class和结构体struct名字使用大写字母开头的匈牙利表示法,相反的.类的方法和属性则用小写字 ...
- Swift类与结构体
类和结构体有很多共性: 定义属性存储数据 定义方法执行功能处理 定义下标,通过下标访问他们的值 初始化他们的状态 通过扩展(Extension)扩展其功能 遵守协议(Protocol),协议提供一种特 ...
- Swift: 类与结构体
对比类与结构体 类与结构体有许多的相同点,它们都可以: 定义属性来存储值: 定义方法来提供功能: 定义下标操作: 定义初始化函数: 扩展它的默认的实现: 遵从协议: 类有一些额外的能力,但是结构体没有 ...
- Swift类和结构体定义-备
Swift中的类和结构体定义的语法是非常相似的.类使用class关键词定义类,使用struct关键词定义结构体,它们的语法格式如下: class 类名 { 定义类的成员 } struct 结构体名 { ...
- Swift - 类和结构体的区别
类和结构体有许多相同之处,也有许多不同之处. 二者区别如下: 1,类可以继承和扩展,结构体不可以 2,可以让一个类的实例来反初始化,释放存储空间,结构体做不到 3,类的对象是引用类型,而结构体是值类型 ...
- swift学习笔记3——类、结构体、枚举
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- swift学习笔记之-类和结构体
//类和结构体 import UIKit //类和结构体 /* 1.枚举enum.结构体struct和String.Array.Dictionary类型,都属于值传递类型,被赋值给新的常量或变量时传递 ...
随机推荐
- IOS开发之网络开发工具
IOS开发之网络开发工具 做移动端开发 常常会涉及到几个模块:1.网络检測 2.网络请求get和post请求 3.文件上传 4.文件下载 5.断点续传 如今将这些一一分享给大家 ,也欢迎 ...
- Choosing a Linux Tracer ------Brendan Gregg's Blog
home Choosing a Linux Tracer (2015) 08 Jul 2015 Linux Tracing is Magic! A tracer is an advanced perf ...
- careercup-数组和字符串1.2
1.2 用C或C++实现void reverse(char *str)函数,即反转一个null结尾的字符串. C++实现代码: #include<iostream> #include< ...
- 【Qt】测测你对Qt的了解–Qt工具知多少
原文:http://blog.163.com/lijiji_1515/blog/static/1268774462009103101944455/ 你知道Qt都提供了哪些工具吗? 你知道Qt的 ...
- 【UML九种图系列】之用例图
用例图: 由参与者(Actor).用例(UseCase)以及它们之间的关系构成的用于描述系统功能的动态视图称为用例图.用例图描述了系统提供的一个功能单元.用例图的主要目的是帮助开发团队以一种图形化的方 ...
- iOS常见的几种延时执行的方法
1.performSelector [self performSelector:@selector(delayMethod) withObject:nil/*可传任意类型参数*/ afterDelay ...
- WPF学习之资源-Resources
WPF学习之资源-Resources WPF通过资源来保存一些可以被重复利用的样式,对象定义以及一些传统的资源如二进制数据,图片等等,而在其支持上也更能体现出这些资源定义的优越性.比如通过Resour ...
- RedHat7/Windows7搭建JAVA开发环境(Eclipse)
RedHat7搭建JAVA开发环境 安装JAVA # yum install java 安装Tomcat # yum install tomcat 确认Tomcat版本 # tomcat versio ...
- OpenCV 2 Computer Vision Application Programming Cookbook读书笔记
### `highgui`的常用函数: `cv::namedWindow`:一个命名窗口 `cv::imshow`:在指定窗口显示图像 `cv::waitKey`:等待按键 ### 像素级 * 在灰度 ...
- 第五篇:web之前端之float的几种清除浮动方式
前端之float的几种清除浮动方式 前端之float的几种清除浮动方式 本节内容 1.float清除方式1 2.float清除方式2 3.float清除方式3 4.float清除方式4 1.flo ...