如何从 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 */