2016-09-09 6 views
2

条件が満たされたら、ちょうど内側のループを反復する方法を探しています。私は "続ける"ことを考えましたが、私が望むことをしていません。 "break"は外側ループを含むループ全体を破壊するようです。Swiftの内部ループからブレーク/エスケープする方法

私のコードでは、条件が満たされています。私は反復jを停止したいが、私は再びiteratingを開始したい。ありがとう、

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 
      } 
     } 
} 
+0

'break'の別の代替としてcoulkd作る使用は、単に内部ループと*ない*外側の1を破ります。 –

+0

あなたがしたいことがiのためのものであるようです。

答えて

5

ブレークは内側ループを壊すだけです。

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 
+0

OPの場合、これはXCodeプレイグラウンドで簡単に確認できます。 –

+0

これは遊び場で書かれました..:D –

0

インデックスアプローチ(anArray[accessByThisIndex])によって、ネストされたインデックスループとそれに続く要素へのアクセスは、C++ 'っぽいなくSwiftyよりの一種です。あなたのアプリケーションに応じて、スウィフトのすばらしい機能を使い、目標を達成することができます。

例えば、我々は代わりに配列の要素にアクセスする、上記の配列のインデックスを気にしない

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 
    ----- */ 

注意が、あなたの配列をソートする(ご使用のアレイのanmeに基づく)と仮定for ... in (... where ...)ループ内に直接存在します。


prefixUpTo(:_)

for i in 1...sortedArray.count { 
    sortedArray.prefixUpTo(i).forEach { 
     print($0) 
    } 
    print("-----") 
} 

/* same printout as above */ 
関連する問題