【技能提升】Swift & struct 比较
2017-06-08 15:26
211 查看
##struct和class应用场景比较
String, Array, Dictionary 都是struct
####mutating function
####继承inheritance
###相同点
本质区别 type不同
Struct Value Type是值类型,Class reference type 是引用类型。
使用场景不同
struct SRectangle { var width = 200 } class CRectangle { var width = 200 }
定义和使用
//struct 使用 var sRect = SRectangle() // 或者 sRect = SRectangle(width:300) sRect.width // 結果就是 300
var cRet = CRectangle() // class 不能直接用 CRectangle(width:300) 必需要定义一個 constructor cRect.width // 為 200
赋值给另一个数
//struct var sRect = SRectangle() // 或者 var sRect2 = sRect sRect2.width // 目前值是 200,因為 sRect 直接 copy 一份完整記憶體給 sRect2 sRect2.width = 500 sRect.width // sRect.width 值不受 sRect2 影響還是 200
var cRect = CRectangle() // 或者 var cRect2 = cRect cRect2.width // 目前值是 200,因為 sRect 直接 copy 一份完整記憶體給 sRect2 cRect2.width = 500 cRect.width // cRect.width 也改變成了 500
immutable可变性
//struct let sRect = SRectangle() sRect.width = 500 //编译出错
//class let cRect = CRectangle() cRect.width = 500 //不会出错
String, Array, Dictionary 都是struct
####mutating function
//struct // struct 的 function 要去改变 property 的值的時候需要加上 mutating extension SRectangle { mutating func changeWidth(width:Int){ self.width = width } }
//class extension CRectangle { func changeWidth(width:Int){ self.width = width } }
####继承inheritance
struct 没有继承,class有继承。
###相同点
Implicit External Parameter Name
//方式1 定义方法 func setSize( width:Int, height:Int) { println("width \(width), height \(height)") } setSize(50, 100)
//方式2 func setSize(width width:Int, height height:Int) { println("width \(width), height \(height)") } setSize(width:50, height:100)
//方式3 不常见 func setSize(#width:Int, #height:Int) { println("width \(width), height \(height)") } setSize(width:50, height:100)
相关文章推荐
- 最近比较烦~IT认识的技能提升
- swift struct class 的区别
- Swift语言精要 - 浅谈结构体(Struct)
- swift3 类class与结构体struct
- OC 与 Swift 反序列化比较
- ios swift比较不错的三方库地址
- ASP.NET技能提升纲要
- Objective-C和Swift中初始化方法比较
- 中高层管理者的现代管理综合技能提升训练
- 20个很棒的android开源项目帮助你提升开发技能
- 【DotNet 技能系列】7. C#中的字符串比较技巧【待定】
- 中层干部管理技能提升--从技术走向管理
- Keystone、Cinder、swift关键技能图解
- Cocos2d-x 3.2 大富翁游戏项目开发-第二十七部分 技能提升和游戏结束判断
- 项目经理的软技能提升——知行合一
- Swift 中的结构体 (Struct)
- 提升Oracle所需的基础技能
- 技能提升
- Swift: 把 Struct 作为数据模型的注意事项
- 我为什么反对寄希望于内部培训提升员工技能的方法?