自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

天下武功唯快不破:6種快速編寫(xiě)代碼的方式

開(kāi)發(fā) 前端
本文我就將和大家分享一些Swift語(yǔ)言編寫(xiě)代碼的方法,它們可以幫助你構(gòu)建出更好的iOS應(yīng)用。

本文轉(zhuǎn)載自公眾號(hào)“讀芯術(shù)”(ID:AI_Discovery)

經(jīng)過(guò)多年的發(fā)展,Swift如今也得到了許多人的青睞。它不僅提供類型安全性,而且比許多語(yǔ)言都簡(jiǎn)潔得多。它的功能在發(fā)展中不斷增加,一定有很多你不知道的技巧隱藏其中。

本文我就將和大家分享一些Swift語(yǔ)言編寫(xiě)代碼的方法,它們可以幫助你構(gòu)建出更好的iOS應(yīng)用。

[[330912]]

在初始化時(shí)調(diào)用willSet和didSet

簡(jiǎn)而言之,就是第一次初始化屬性時(shí)不會(huì)調(diào)用willSet和didSet屬性觀察器,但是可以通過(guò)將初始化包裝在defer語(yǔ)句中來(lái)解決這個(gè)問(wèn)題。

盡管有點(diǎn)笨拙,但是由于你不得不以某種方式設(shè)置默認(rèn)值(在聲明中或在外部defer中),掌握之后就會(huì)很快樂(lè):

使用Maps安全打開(kāi)選項(xiàng)

通常我們會(huì)使用if let或guardlet語(yǔ)法來(lái)安全地打開(kāi)Swift中的選項(xiàng),但有時(shí)我會(huì)想能不能有其他方法解決這個(gè)問(wèn)題,尤其是在展開(kāi)子屬性時(shí)。我們的另一個(gè)選擇是:使用map操作符打開(kāi)選項(xiàng)。

只有當(dāng)包含在map中的可選值包含某個(gè)值的時(shí)候才對(duì)其進(jìn)行計(jì)算,從而確保其不為nil。

在可選的元組中,使用maps進(jìn)行解包也很方便。用Swift語(yǔ)言可以進(jìn)行這樣的操作:

  1. func sampleTuple() ->(String, String)?{ 
  2.     return nil 
  3. }let (a, b) = sampleTuple().map { ($0, $1) } ?? ("NA","NA") 

使用重新拋出進(jìn)行強(qiáng)大的異常處理

想必大家對(duì)throws關(guān)鍵字都很熟悉用得也很多,但是Swift中的rethrows功能可能就不是常常會(huì)用到了。使用rethrows關(guān)鍵字聲明的函數(shù)表示,只有當(dāng)其函數(shù)參數(shù)之一throws時(shí)才會(huì)拋出錯(cuò)誤。

也就是說(shuō),如果Closure參數(shù)沒(méi)有引發(fā)錯(cuò)誤,那么在調(diào)用它時(shí)我們無(wú)需使用其他try方法,這樣一來(lái)就能大大減少樣板代碼。正如在下面的代碼中看到的那樣,我們不必將相同的不拋異常函數(shù)放入do-catch塊中。

使用協(xié)議擴(kuò)展進(jìn)行默認(rèn)實(shí)現(xiàn)

Swift協(xié)議功能強(qiáng)大,但它們不允許你指定默認(rèn)實(shí)現(xiàn)。如果你想避免重寫(xiě)方法,這樣做可能會(huì)非常方便。此外,你還可以使用擴(kuò)展中的where子句僅為某些約束指定協(xié)議實(shí)現(xiàn),但要確保自己不會(huì)在代碼庫(kù)中過(guò)度使用協(xié)議擴(kuò)展。

輕松跟蹤字典中的更改

如何進(jìn)行Swift字典中的更改(可能是用于調(diào)試)?繁瑣的方法是通過(guò)分散內(nèi)容來(lái)實(shí)現(xiàn),但是也有一種快速的方法,只需在保存該字典的對(duì)象上定義一個(gè)下標(biāo):

在不同場(chǎng)景使用guardlet

Guard let語(yǔ)句使用的是故障安全機(jī)制,其中nil值可確保您立即返回上一層。但在某些情況下,return并不是對(duì)我們最有利的方法。例如,你可能處于for循環(huán)中,只想要continue 或者 break,那么可以按照以下方式進(jìn)行操作:

學(xué)會(huì)這些小技巧,去享受縱橫馳騁的編碼快樂(lè)吧。

 

責(zé)任編輯:趙寧寧 來(lái)源: 讀芯術(shù)
相關(guān)推薦

2018-06-19 16:48:42

華為

2021-02-23 10:15:31

軟件開(kāi)發(fā)IT領(lǐng)導(dǎo)者首席信息官

2021-03-03 11:36:00

嵌入式項(xiàng)目開(kāi)發(fā)字符串格式化

2019-09-09 08:40:44

2021-01-26 09:19:58

Redis框架架構(gòu)

2020-02-21 16:20:37

系統(tǒng)驅(qū)動(dòng)項(xiàng)目管理

2020-01-16 16:20:55

網(wǎng)絡(luò)安全數(shù)據(jù)技術(shù)

2016-08-01 10:38:14

華為

2011-12-05 09:56:59

2018-04-13 10:36:44

Web應(yīng)用優(yōu)化

2013-06-18 10:52:12

大數(shù)據(jù)

2018-12-19 06:38:01

Wi-Fi 6Wi-Fi網(wǎng)絡(luò)

2014-12-04 17:30:08

編程

2014-12-04 15:19:51

程序員

2012-12-24 09:57:58

ERPDynamics AX

2014-03-20 16:18:30

碼農(nóng)工作效率

2022-02-21 09:35:36

機(jī)器學(xué)習(xí)自然語(yǔ)言模型

2017-06-20 11:10:13

2024-04-25 16:56:14

GPT-4大模型人工智能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)