3 回答
TA貢獻1757條經驗 獲得超8個贊
if let并guard let提供類似但不同的目的。
“else”的情況guard必須退出當前范圍。通常這意味著它必須調用return或中止程序。guard用于提供早期返回,而不需要嵌套其余的功能。
if let嵌套其范圍,并不需要任何特殊的東西。它可以return或不。
一般來說,如果if-let塊將是函數的其余部分,或者它的else子句中有一個return或中止,那么你應該使用它guard。這通常意味著(至少在我的經驗中),如果有疑問,guard通常是更好的答案。但是有很多情況if let仍然適合。
TA貢獻2019條經驗 獲得超9個贊
何時使用if-let以及何時使用guard往往是一種風格問題。
假設您有func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int一個可選的項目數組(var optionalArray: [SomeType]?),0如果數組是nil(未設置)或者count數組是否有值(設置),則需要返回。
您可以使用if-let以下方式實現它:
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
{
if let array = optionalArray {
return array.count }
return 0
}或者像這樣使用guard:
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
{
guard let array = optionalArray else {
return 0
}
return array.count }這些例子在功能上是相同的。
凡guard真正的亮點是,當你有一個像驗證數據的任務,你想如果有什么是錯的功能早期失效。
if-let當你接近完成驗證時,“成功路徑”和現在成功綁定的選項都在方法的主要范圍內,而不是嵌套一堆s,因為失敗路徑已經全部返回。
- 3 回答
- 0 關注
- 591 瀏覽
添加回答
舉報
