<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
前言:通過學習與研究swift3.0的官方檔案關於初始化這部分可以總結為一句話:類與結構是確保一個型別的範例可以使用之前,其所有儲存屬性都得到了正確的賦值。
struct FirstStruct{ let b:Int let c:Int init() { b = 2 c = 3 } } let fs = FirstStruct()
解析:這個結構中b,c這兩個儲存屬性並未賦初值,而是在init初始化器(相當於Java中的建構函式)中賦初值。
struct SecondStruct{ let b:Int let c:Int } let ss = SecondStruct(b:2,c:3)
解析:結構中,編譯器會自動生成memberwise的初始化器,因此在呼叫結構時必須傳入初始化值。
//struct ThirdStruct{ // let b:Int // let c:Int // init() { // b = 0 // } //} //let ts = ThirdStruct(c:3)
注意:結構中宣告了初始化器,編譯器將不會給我們新增memberwise的初始化器,(原理和Java的空建構函式一致)上面這個例子是不能通過編譯的。
struct FourthStruct{ let b:Int let c:Int init() { self.init(b:2) } init(b:Int){ c = 2 self.b = b } } let fos = FourthStruct()
//錯誤範例 //class SecondClass{ // let b:Int // let c:Int //} //let sc = SecondClass(b:2,c:3)
解析:類裡面也可以通過宣告init初始化器,若不提供初始化器,編譯器不會提供預設的初始化器
class Parent2{ var name:String var height:Int init(name:String,height:Int){ self.name = name self.height = height } } let p2 = Parent2(name:"zs",height:168) p2.height p2.name
解析:沒有特殊的修飾符的init就是專門的(Designated init)初始化器,主要的作用就是確保所有的儲存屬性得到初始化
一般只有一個,可以有多個,根據你呼叫時賦值的不用而呼叫不同的初始化器
class Parent3{ var name:String var sex:String init(name:String,sex:String){ self.name = name self.sex = sex } init(name:String){ self.name = name sex = "男" } } let p3 = Parent3(name:"zs",sex:"女") let p4 = Parent3(name:"ls") p3.sex p4.sex
class Parent3{ var name:String var sex:String init(name:String,sex:String){ self.name = name self.sex = sex } convenience init(name:String){ self.init(name:name,sex:"男") } convenience init(){ self.init(name:"zs") } } let p3 = Parent3(name:"zs") let p4 = Parent3() p3.sex p4.sex
解析:通過在初始化器前宣告convenience關鍵字可以宣告一個便利初始化器,它的作用是方便建立物件時使用,但它必須直接或間接呼叫專門初始化器
子類的專門初始化器必須呼叫父類別的專門初始化器,子類不能呼叫父類別的便利初始化器
class Parent4{ var name:String var sex:String init(name:String,sex:String){ self.name = name self.sex = sex } convenience init(name:String){ self.init(name:name,sex:"男") } } //----------------------------------------------- class Child4:Parent4{ var age:Int init(age:Int) { self.age = age //super.init(name: "ls")錯誤範例 super.init(name: "zs",sex:"妖") } convenience init(){ self.init(age:12) } } let c4 = Child4() c4.name
以上就是Swift中類與結構的初始化範例解析的詳細內容,更多關於Swift類與結構初始化的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45