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类型,都属于值传递类型,被赋值给新的常量或变量时传递 ...
 
随机推荐
- gitbook 制作 beego 参考手册
			
安装gitbook工具 npm install -g gitbook-cli 从github 下载beego文档 https://github.com/beego/beedoc 创建目录 在 zh-c ...
 - notepad++下载Subversion插件,显示intalltion of subversion failed
			
notepad++安卓subversion的插件不成功,是因为我们下载TortoiseSVN客户端的版本跟subversion的版本不兼容 一.背景: 在新浪云平台上开发微信公众账号,因为要使用SVN ...
 - 《Pro Android Graphics》读书笔记之第四节
			
Android Procedural Animation: : XML, Concepts and Optimization Procedural Animation Concepts: Tweens ...
 - 部分 CM11 系统 Android 平板执行植物大战僵尸 2 黑屏的解决的方法
			
原文 http://forum.xda-developers.com/showthread.php?t=2755197 部分 CM11 系统的 Android 平板(比如三星 GT-P5110 )执行 ...
 - CFileDialog的使用方法简单介绍
			
CFileDialog文件选择对话框的使用:首先构造一个对象并提供对应的參数,构造函数原型例如以下: CFileDialog::CFileDialog( BOOL bOpenFileDialog, L ...
 - DTRACE 专家
			
http://dtrace.org/blogs/bmc/ https://github.com/bcantrill http://www.tudou.com/programs/view/Q6fHZFg ...
 - JAVA 强引用、软引用、弱引用、虚引用
			
http://www.cnblogs.com/absfree/p/5555687.html
 - 【转】jsoncpp在xcode中的使用
			
http://blog.csdn.net/ashqal/article/details/8573392 考虑到cocos2dx需要使用jsoncpp做关卡的设置, 尝试用源代码直接放到项目以方便后期生 ...
 - (转载)Eclipse下配置Github环境 .
			
总的参考文档:EGit User Guide http://wiki.eclipse.org/EGit/User_Guide Address: http://www.linuxidc.com/Linu ...
 - 用NodeJs实现延迟调用,规避定时任务的闭包问题
			
很多人在用NodeJs的setTimeout(callback, delay[, arg][, ...])编写定时任务时,习惯上直接操作callback外部的对象object(闭包的特点).这样做有一 ...