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 循环中守卫?的主要内容,如果未能解决你的问题,请参考以下文章

Swift编程语言中如何实现自定义类型的for-in循环(基于Swift 2.2)

For循环用于搜索数组,Swift [重复]

Swift学习笔记之---for循环与while循环

Swift学习笔记之---for循环与while循环

Swift学习笔记之---for循环与while循环

Swift学习笔记之---for循环与while循环