如何从 Swift 中的内部循环 break/escape
How to break/escape from inner loop in Swift
我正在寻找一种方法来在满足条件后停止迭代 just 内部循环。我想过使用 "continue" 但它并没有按照我的意愿进行。
"break" 似乎打破了整个循环,包括外循环。
所以在我的代码中,一旦满足条件。我想停止迭代 j 但我想再次开始迭代 i 。谢谢,
for i in 0..<sortedArray.count{
for j in 1..<sortedArray.count{
if sortedArray[j] == sortedArray[i]{
//I want to skip iterating inner loop j from now. and back to iterating i
}
}
}
break 只是打破内部循环。
例如
for var i in 0...2
{
for var j in 10...15
{
print("i = \(i) & j = \(j)")
if j == 12
{
break;
}
}
}
输出 -->
i = 0 & j = 10
i = 0 & j = 11
i = 0 & j = 12
i = 1 & j = 10
i = 1 & j = 11
i = 1 & j = 12
i = 2 & j = 10
i = 2 & j = 11
i = 2 & j = 12
嵌套的索引循环和随后的通过索引方法访问元素 (anArray[accessByThisIndex]
) 有点像 C++,而不是 Swifty。根据您的应用程序,您可以充分利用 Swift 中的简洁功能来实现您的目标。
例如,假设(基于数组的名称)您的数组已排序,
let sortedArray = [2, 5, 7, 9]
for i in sortedArray {
for j in sortedArray where j <= i {
print(j)
}
print("-----")
}
/* 2
-----
2
5
-----
2
5
7
-----
2
5
7
9
----- */
请注意,我们不关心上面数组的索引,而是直接在 for ... in (... where ...)
循环中访问数组的元素。
另一个可以使用prefixUpTo(:_)
for i in 1...sortedArray.count {
sortedArray.prefixUpTo(i).forEach {
print([=11=])
}
print("-----")
}
/* same printout as above */
我正在寻找一种方法来在满足条件后停止迭代 just 内部循环。我想过使用 "continue" 但它并没有按照我的意愿进行。 "break" 似乎打破了整个循环,包括外循环。
所以在我的代码中,一旦满足条件。我想停止迭代 j 但我想再次开始迭代 i 。谢谢,
for i in 0..<sortedArray.count{
for j in 1..<sortedArray.count{
if sortedArray[j] == sortedArray[i]{
//I want to skip iterating inner loop j from now. and back to iterating i
}
}
}
break 只是打破内部循环。
例如
for var i in 0...2
{
for var j in 10...15
{
print("i = \(i) & j = \(j)")
if j == 12
{
break;
}
}
}
输出 -->
i = 0 & j = 10
i = 0 & j = 11
i = 0 & j = 12
i = 1 & j = 10
i = 1 & j = 11
i = 1 & j = 12
i = 2 & j = 10
i = 2 & j = 11
i = 2 & j = 12
嵌套的索引循环和随后的通过索引方法访问元素 (anArray[accessByThisIndex]
) 有点像 C++,而不是 Swifty。根据您的应用程序,您可以充分利用 Swift 中的简洁功能来实现您的目标。
例如,假设(基于数组的名称)您的数组已排序,
let sortedArray = [2, 5, 7, 9]
for i in sortedArray {
for j in sortedArray where j <= i {
print(j)
}
print("-----")
}
/* 2
-----
2
5
-----
2
5
7
-----
2
5
7
9
----- */
请注意,我们不关心上面数组的索引,而是直接在 for ... in (... where ...)
循环中访问数组的元素。
另一个可以使用prefixUpTo(:_)
for i in 1...sortedArray.count {
sortedArray.prefixUpTo(i).forEach {
print([=11=])
}
print("-----")
}
/* same printout as above */