2016-01-10 106 views
4

我很困惑何時使用guard以及何時使用if...else守衛聲明和if ... else聲明之間的基本區別是什麼?

警衛是替換還是替代If語句? 主要的事情想知道什麼是Swift語言的guard語句的功能好處?

任何幫助清除這種情況將不勝感激。

+6

是否[這事先問答](http://stackoverflow.com/questions/30791488/swift-2-guard-keyword)回答你的問題? –

回答

12

使用警衛似乎與使用if似乎沒有多大區別,但有了警惕,您的意圖更清晰:如果您的條件未得到滿足,執行不應繼續。另外它具有更短,更易讀的優點,所以守衛是一個真正的改進,我相信它會很快被採用。

使用警衛有一個好處,可能會使它對你更有用:如果你用它來展開任何可選項,那些展開的值將留在你的代碼塊的其餘部分。例如:

guard let unwrappedName = userName else { 
return 
} 

print("Your username is \(unwrappedName)") 

這是比較直的if語句,在那裏展開的值將只提供if塊裏面,像這樣:

if let unwrappedName = userName { 
print("Your username is \(unwrappedName)") 
} else { 
return 
} 

// this won't work – unwrappedName doesn't exist here! 
print("Your username is \(unwrappedName)") 

https://www.hackingwithswift.com/swift2

+0

對於我來說,展開的值範圍的第二點是很清楚的,但是仍然沒有得到當我們必須檢查多個條件時,如何通過警戒語句執行提前返回。 – technerd