如何理解 if let 與guard let

2021-07-06 04:57:57 字數 2152 閱讀 9667

//很多

ios程式設計師,從

oc轉向

swift

,就像身在曹營心在漢,寫著

swift

**,卻懷揣了一顆

oc的心,經常碰見

oc**在

swift

裡找不到,或者看不見

oc的影子就很是著急(我以前也是很長時間牴觸著

swift,

其實用順了挺好的) //

就像if let

和guard let

在專案裡不用你依然可以完成工作,但是這兩個方法其實挺重要的 //

不囉嗦了,開始上**解釋

varstr1:

string?

varstr2:

string?

varstr3:

string?

//如果我希望當三個都不為空的時候做事情 //

不用if let

和guard let

str1 =

"1"

str2 =

"2"

str3 =

"3"

ifstr1 !=

nil&& str2 !=

nil&& str3 !=

nil //

用if let 

varstr4:

string?

varstr5:

string?

varstr6:

string?

//如果我希望當三個都不為空的時候做事情 //

用if let

str4 =

"1"

str5 =

"2"

str6 =

"3"

//tip:

你可以直接這樣做

let str4 = str4

,不用去想其他名字定義變數 if

letstr4 = str4,

letstr5 = str5,

letstr6 = str6

else //

程式走過

if let

後並不對屬性做修改還是會有

optional

print

("if let

語句過後\(

str4)\

(str5)\

(str6)")

//列印結果為

if let

語句過後

optional("1")optional("2")optional("3")

//用guard let

varstr7:

string?

varstr8:

string?

varstr9:

string?

//如果我希望當三個都不為空的時候做事情 //

用guard let

str7 =

"1"

str8 =

"2"

str9 =

"3"

guard

letstr10 = str7,

letstr11 = str8,

letstr12 = str9

else

//tip:

如果有乙個引數為空就會

return

走不到這裡 //

程式走過

guard let

後定義的引數不會有

optional

,不用強制解包加!

print

("guard let

語句過後\(

str7)\

(str8)\

(str9)")

//列印結果為

guard let

語句過後

optional("1")optional("2")optional("3")

print

("guard let

語句過後\(

str10)\

(str11)\

(str12)")

//列印結果為

guard let

語句過後

123

你也可以試試把某個引數不賦值看看列印結果,多敲幾遍,就會發覺很自然了。

如何理解程序與執行緒

程序 process 和執行緒 thread 是作業系統的基本概念,但是它們比較抽象,不容易掌握。最近,我讀到一篇材料,發現有乙個很好的模擬,可以把它們解釋地清晰易懂。1.計算機的核心是cpu,它承擔了所有的計算任務。它就像一座工廠,時刻在執行。2.假定工廠的電力有限,一次只能供給乙個車間使用。也就...

繼承與多型該 如何理解

首先思考我們應該要知道的乙個問題 繼承出現的意義,或者說,我們為什麼想到用繼承。當我們在寫比如乙個計算器的工具時,首先寫了乙個加法運算的類。感覺很輕鬆,在加乙個減法運算時,發現把加法運算的類粘過來稍微改改就行了。同樣的,乘法 除法 開根運算 冪次方運算等,寫出來這麼多類來,發現,每乙個類的大部分 都...

如何理解使用者態與核心態

在cpu的所有指令中,有一些指令是非常危險的,如果錯用,將導致整個系統崩潰。比如 清記憶體 設定時鐘等。如果所有的程式都能使用這些指令,那麼你的系統一天宕機n回就不足為奇了。所以,cpu將指令分為特權指令和非特權指令,對於那些危險的指令,只允許作業系統及其相關模組使用,普通的應用程式只能使用那些不會...