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 关注
- 605 浏览
添加回答
举报
