web-dev-qa-db-ja.com

for-loop内の 'where'をswiftで使用できますか?

別の場所で「where」キーワードを使用してからスイッチを使用する可能性もありますか?たとえば、for inループで使用できますか?

私はブール値を持つ配列を持っています、すべて値で、私はこのようなことをすることができます:

var boolArray: [Bool] = []

//(...) set values and do stuff


for value where value == true in boolArray {
   doSomething()
}

これはifを使用するよりもはるかに優れているので、forループと組み合わせてwhereを使用する可能性があるかどうか疑問に思っています。あなたの時間のタイ。

40
Simon

Swift 2、新しいwhere構文が追加されました:

for value in boolArray where value == true {
   ...
}

Pre 2.0では、1つの解決策は.filter反復する前の配列に対して:

for value in boolArray.filter({ $0 == true }) {
   doSomething()
}
92

通常のfor-loopは、リストに存在するすべての要素を繰り返します。ただし、データが特定の条件を満たす場合にのみ反復したい場合は、for -loopwhere句を使用できます。ループ内のif条件の単なる置換です。

例えば:

let numbers = [1,2,3,4,5,6,7]
for data in numbers {
    if (data % 2 == 0) {
        print(data)
    }
}

次のように簡単な方法で書き直すことができます。

for data in numbers where data % 2 == 0 {
    print(data)
}
4
Sunil Sharma