下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、關(guān)于swift的個(gè)人小結(jié)本文是個(gè)人對(duì)于目前學(xué)習(xí)swift的一些心得的匯總,這里分享給大家,希望大家能夠喜歡寫在前面接觸swift也有段時(shí)間了,通過(guò)這段時(shí)間自己接觸和借鑒別人的經(jīng)驗(yàn),記錄兒點(diǎn)關(guān)于swift 的小技巧,雖然不是什么高深的原理知識(shí),但是在平常的項(xiàng)冃中用到或許對(duì)以提高開發(fā)效率 呢回,哈哈,接下來(lái)就簡(jiǎn)單總結(jié)一下:枚舉(enum)結(jié)合一個(gè)小場(chǎng)景,比如我們要做一個(gè)關(guān)于性別判斷的一個(gè)小case:可能我們首先想到的就是這樣,硬編碼寫入,每次都需要手動(dòng)輸入var gender = ""gender = "man"switch gender case &quo
2、t;man”: print("man”) case "female": print("female")default: print("other")但是如果我們利用枚舉來(lái)寫的話:enum gender case man case female case otherjvar gtype: gender = .manswitch gtype case .man: print("男性")case .female: print(h女性"(case .other: printf*其他類型h)default
3、: print(哦也不知道“)把需要的類型寫到enum中,就會(huì)減少不小心輸入錯(cuò)誤的兒率,而且不在enum范圍中的實(shí) 例,編輯器也會(huì)指出??蘸线\(yùn)算符比如我們要定義某個(gè)label的默認(rèn)text,也就是說(shuō),如果我們沒有去人為設(shè)置,這個(gè)label 就會(huì)用默認(rèn)text顯示,我們可能會(huì)這么寫:var customtext: string?var defaulttext ="您女了”var texttollse = ""if let text = customtext texttollse = text else texttouse = defaulttext如杲換種簡(jiǎn)單的寫法
4、就成了這樣:var customtext: string?var defaulttext = ”您女了”var texttouse = ""var texttollse = customtext ? defaulttext?的意思就是如果texttollse為nil則選擇defaulttext否則選擇customtext函數(shù)式比如我們獲取10以內(nèi)的奇數(shù),第一想法是,用for循環(huán)呀:var arr = lnt()for i in 1.10 if i % 2 = 1 arr.append(i) print(arr)當(dāng)然了,必然可以計(jì)算出結(jié)果,如果換種思路呢,swift內(nèi)置fil
5、ter函數(shù):var arr = (1.10).filter (num) -> bool in num % 2 = l)print(arr)閉包函數(shù)舉個(gè)栗子,兩個(gè)字符串拼接使用函數(shù):func sum(a: string, b: string) -> string return a + bvar result = sum(a: ”你好”,b:”哈哈哈”)如果使用閉包的話:var sumstringclosure: (string, string) -> string = $0 + $lsumstringclosure("hello"z "world&
6、quot;)有木有感覺easy 了好多convenience init便利初始化我們聲明一個(gè)類,給這個(gè)類設(shè)置變量然后將其初始化class animal var dog: int? var cat: int? in it(dog: i nt, cat: int) self.dog = dog self.cat = dog var dadi = animal(dag: 2, cat: 4)daddogdadi.cat假如我們想在每次用到animal這個(gè)類的時(shí)候,我們想著給這個(gè)類中的dog和cat都設(shè)置好 數(shù)量,我們就可以用convenience init來(lái)設(shè)置class animal var do
7、g: int? var cat: int? init(dog: int, cat: int) self.dog = dog self.cat = dog convenience init() init(dog: 10, cat: 10) vardadi = an imal()dadi.dogdadi.cat屬性觀察 自從swift更新到swift3之后 我們發(fā)現(xiàn) 變量的setget方法發(fā)生改變了有木有,添加了一個(gè) 很方便的屬性就是willset和didset,比如我們?nèi)绻笠粋€(gè)正方形的周長(zhǎng),使用function的話 是這樣子的:var length :double?func getdiamet
8、er(length: double)> double return length * 4getdiameter(length: 10)如果我們使用變量的屬性觀察方法:var perimeter: double?var length: double? willset print("準(zhǔn)備賦值中”)didset perimeter =length! * 4length = 20perimeterwillset是在屬性發(fā)生改變z前調(diào)用的didset是在屬性發(fā)生改變之后調(diào)用的。遍歷方法打印字符串:如果使用while來(lái)var i = owhile i<5 print("ir
9、embeu") i += 1我們必須要定義一個(gè)變量來(lái)確保打印達(dá)到我們要求的次數(shù),但是我們定義越多的變量就意味 著出錯(cuò)的風(fēng)險(xiǎn)越大,所以還是盡量少寫點(diǎn)兒代碼,改成for循環(huán)版:for _ in 1.10 print("itembeu")不需要我們定義多余變量,因?yàn)閟wift語(yǔ)法設(shè)計(jì)的時(shí)候用一來(lái)代替可以忽略的變量了計(jì)算屬性函數(shù)取圓的直徑和半徑:1、使用函數(shù):在這種情況下,我們根據(jù)半徑求直徑,根據(jù)已經(jīng)直徑求半徑,需要寫兩個(gè) func廿onfunc getdiameterfradius: double)> double return radius * 2func ge
10、tradiusfdiameter: double) -> double return diameter / 2getdiameter(radius: 20)getradius(diameter: 100) 2、使用變量的計(jì)算屬性 setvar radius: double = lovar diameter: double get return radius * 2 radius = newvalue / 2radius / 20diameter / 40diameter = 600radius / 300我們知道直徑和半徑是相互依存的關(guān)系的,使用變暈的計(jì)算屬性這樣看起來(lái)要比使用函數(shù)計(jì) 算
11、要簡(jiǎn)潔的多了。泛型如果我們需要將不同類型數(shù)組中的變量打印輸出,我們可能會(huì)這樣做:var stringarr ="騎士“, ”湖人”,"公牛hvar intarr = 1, 3, 4, 5, 6var doublearr = 1.0, 2.0, 3.0func printstringarr(a: string) for s in a print(s) func printintarr(a: int) for i in a print(i) func printdoublearr(a: double) for d in a print(d)我們需要定義不同類型的數(shù)組,如果類型多
12、了,那我們做的無(wú)謂的工作就有點(diǎn)兒多了,這時(shí) 候我們?nèi)绻褂梅盒蛠?lái)解決這個(gè)問(wèn)題的話:funcprin teleme ntfromarrvt>(eleme nts:t)for e in eleme nts print(e) printelementfromarr(elements: 1,2,3,4)簡(jiǎn)單好多有木有,泛型是swift語(yǔ)言強(qiáng)大的核心,泛型是對(duì)類型的抽彖,使用泛型開發(fā)者 可以更加靈活方便的表達(dá)代碼意圖。有參函數(shù)的參數(shù)必須有一個(gè)明確的參數(shù)類型,有些吋候 開發(fā)者會(huì)遇到這樣一種情況,就像上面我們舉的這個(gè)例子,由于變量有類型之分,實(shí)現(xiàn)相同 的功能,可能需要重載成多個(gè)函數(shù)來(lái)實(shí)現(xiàn),這大大浪費(fèi)了
13、開發(fā)成本,使用泛型,可以完美的 解決這個(gè)問(wèn)題。拓展swift中沒有了 0c中的category但是保留了 extension,我們和extension打交道的時(shí)候也 就比較多了,如果我們需要計(jì)算一個(gè)數(shù)的平方,我們可以聲明一個(gè)函數(shù),像這樣:func squ(x: int)> int return x * xvar s = squ(x: 10)那如果我們要求10的4次方的話,我們就要var s = squ(x: 10)squ(x: s)創(chuàng)建多余變量。使用拓展:extension int var squ: int return self * self 10.squl0.squ.squ簡(jiǎn)潔,不需要多創(chuàng)建變量。gaurd let if let檢驗(yàn)用戶名和密碼:1.使用if let,我們需要一層層的嵌套var uname: double?var upassword: double?f unc userlogl n() if let user name = uname if let password = upassword print(h歡迎z (username)h!) 2、使用gaurd let,如果uname或者upas
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年租賃合同租金調(diào)整及維修責(zé)任
- 2024版房地產(chǎn)買賣及租賃合同
- 如何做到合理膳食與健康
- 2024貸款分款協(xié)議書
- 2024年高端化妝品市場(chǎng)exclusivity合同
- 四川三河職業(yè)學(xué)院《馬克思主義經(jīng)濟(jì)學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024年高端智能設(shè)備采購(gòu)與技術(shù)轉(zhuǎn)讓合同
- 防水施工監(jiān)理旁站記錄
- 電氣培訓(xùn)資料:電纜敷設(shè)方式與代號(hào)
- 銅仁幼兒師范高等??茖W(xué)校《藥學(xué)外語(yǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- dip按病種分值付費(fèi)
- 2024年中考語(yǔ)文名著閱讀《儒林外史》內(nèi)容簡(jiǎn)介、主要人物形象及相關(guān)練習(xí)
- 旅游商圈城市商圈oto系統(tǒng)
- 加速康復(fù)外科(ERAS)-骨科患者術(shù)后疼痛管理
- 研究生實(shí)驗(yàn)方案
- 三年級(jí)加法豎式題50道
- 阿里國(guó)際站合作協(xié)議
- 融資租賃物流方向行業(yè)報(bào)告
- 服務(wù)重點(diǎn)客戶
- 工業(yè)濾芯行業(yè)利潤(rùn)分析
- 2023年四川成都市初中學(xué)業(yè)水平考試生物試卷真題(答案詳解)
評(píng)論
0/150
提交評(píng)論