当前位置:  开发笔记 > IOS > 正文

是否突破外部循环仍然适用于Swift 2?

如何解决《是否突破外部循环仍然适用于Swift2?》经验,为你挑选了1个好方法。

我正在阅读Michael Dippery @ 2015的书"Professional Swift".在第25页的书中,他写道:

"break和continue语句都会从最里面的循环中断开.但是,你可以标记循环,这样你就可以突破外循环了"

let data = [[3,9,44],[52,78,6],[22,91,35]]
let searchFor = 78
var foundVal = false

outer: for ints in data {
    inner: for val in ints {
        if val == searchFor {
            foundVal = true
            break outer
        }
    }
}

if foundVal {
    print("Found \(searchFor) in \(data)")
} else {
    print("Could not find \(searchFor) in \(data)")
}

但是,当我改变时,在操场上:

break outer 

代码到

break inner

出现相同的结果:

发现 78 in [[3, 9, 44], [52, 78, 6], [22, 91, 35]]

还有必要label loops突破outer loop吗?



1> Ashish Kakka..:

打破内部和外部循环使差异让我们通过获取一个updatedData变量再次检查您的代码.

let data = [[3,9,44],[52,78,6],[22,91,35]]
let searchFor = 78
var updatedData = [Int]()
var foundVal = false

outer: for ints in data {
    inner: for val in ints {
        updatedData.append(val)
        if val == searchFor {
            foundVal = true
            break outer
        }
    }
}

break outer你会得到像:

在[[3,9,44],[52,78,6],[22,91,35]中找到78

更新的数据是[3,9,44,52,78]

break inner您将获得不同的更新数据:

在[[3,9,44],[52,78,6],[22,91,35]中找到78

更新的数据是[3,9,44,52,78,22,91,35]

因此,你将在78之后检查在内部中6没有添加到更新的数据中,因为内部循环只是被打破并且再次与下一个一起盯着ints.

在休息时,整个循环将被破坏.

希望你能得到这方面的帮助.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有