Swift 2:在 for 循环中守卫?
Posted
技术标签:
【中文标题】Swift 2:在 for 循环中守卫?【英文标题】:Swift 2: guard in for loop? 【发布时间】:2015-12-30 02:12:31 【问题描述】:在 for 循环中使用保护的正确方法是什么?
for (index,user) in myUsersArray.enumerate()
guard user.id != nil else
print("no userId")
//neither break / return will keep running the for loop
if user.id == myUser.id
//do stuff
【问题讨论】:
需要打印部分吗?这可以用于for in where
。
不,只是为了“信息”,同时开发可能仍然存在一些旧的 dev-user-accs
语法是guard let...
,而你在else块中寻找的词是continue
。但是,是的,for in where 会更好。
【参考方案1】:
有几种方法可以制作一些条件:
你可以为整体设置一个条件。每次迭代都会调用它
for (index, user) in myUsersArray.enumerate() where check()
for (index, user) in myUsersArray.enumerate() where flag == true
您可以检查内部的某些内容并跳过迭代或停止循环:
for (index, user) in myUsersArray.enumerate()
guard check() else continue
guard flag else break
在你的情况下,我会这样写:
for (index, user) in myUsersArray.enumerate()
guard let userId = user.id, userId == myUser.id else continue
// do stuff with userId
【讨论】:
看起来不错,但您可以添加一些词来描述您打算传达的内容。 @appzYourLife 这只是您可以放置条件的几个示例【参考方案2】:@Arsens 的答案是正确的,但我认为这更容易理解
let ints = [1,2,3,4,5]
for (index,value) in ints.enumerate()
guard value != 1 else
print("Guarded \(value)")
continue
print("Processed \(value)")
【讨论】:
【参考方案3】:for (index,user) in myUsersArray.enumerate()
guard let userId = user.id else
print("no userId")
continue;
if userId == myUser.id
//do stuff
【讨论】:
以上是关于Swift 2:在 for 循环中守卫?的主要内容,如果未能解决你的问题,请参考以下文章