Swift Loops Cheat Sheet (English)
Swift 5.0+で利用可能なループのチートシートです。
For
Swift 3.0以降、Cスタイルの「for」ループは非推奨になりました。しかし、古いコードベースを移行している人々のためにそれも含めます。
For-InでRange
のループ
n回ループ
非推奨Cスタイルバージョン:
for var i = 0; i < 10; i++ {
print(i)
}
...
(閉区間) 演算子で閉区間のfor-in
ループ:
for i in 0...10 {
print(i)
}
..<
(半開区間) 演算子で半開区間のfor-in
ループ:
for i in 0..<10 {
print(i)
}
逆の順序でn回ループ
非推奨Cスタイルバージョン:
for var i = 10; i > 0; i-- {
print(i)
}
reversed()
を使用して逆転された区間の閉区間のfor-in
ループ::
for i in (1...10).reversed() {
print(i)
}
ストライドでループ
非推奨Cスタイルバージョン:
for var i = 0; i < 10; i += 2 {
print(i)
}
stride(from:to:by:)
を使用して指定された量でステップする半開区間のfor-in
ループ:
for i in 0.stride(to: 10, by: 2) {
print(i)
}
Arrayのループ
Array
の配列値のループ
非推奨Cスタイルバージョン:
let someNumbers = [2, 3, 45, 6, 8, 83, 100]
for var i = 0; i < someNumbers.count; i++ {
print(someNumbers[i])
}
Array
のすべての値のfor-in
ループ:
let someNumbers = [2, 3, 45, 6, 8, 83, 100]
for number in someNumbers {
print(number)
}
let someNumbers = [2, 3, 45, 6, 8, 83, 100]
someNumbers.forEach { number in
print(number)
}
逆の順序でArray
の配列値のループ
非推奨Cスタイルバージョン:
let someNumbers = [2, 3, 45, 6, 8, 83, 100]
for var i = someNumbers.count - 1; i >= 0; i-- {
print(someNumbers[i])
}
reversed()
を使用して逆転されたArray
のすべての値のfor-in
ループ:
let someNumbers = [2, 3, 45, 6, 8, 83, 100]
for number in someNumbers.reversed() {
print(number)
}
reversed()
を使用して逆転されたArray
のすべての値のforEach
ループ:
let someNumbers = [2, 3, 45, 6, 8, 83, 100]
someNumbers.reversed().forEach { number in
print(number)
}
Array
のインデックス付きの配列値のループ
非推奨Cスタイルバージョン:
let someNumbers = [2, 3, 45, 6, 8, 83, 100]
for var i = 0; i < someNumbers.count; i++ {
print("\(i + 1): \(someNumbers[i])")
}
enumerated()
を使用して列挙されたArray
のすべての値のfor-in
ループ:
let someNumbers = [2, 3, 45, 6, 8, 83, 100]
for (index, number) in someNumbers.enumerated() {
print("\(index + 1): \(number)")
}
enumerated()
を使用して列挙されたArray
のすべてのインデックスと値のforEach
ループ:
let someNumbers = [2, 3, 45, 6, 8, 83, 100]
someNumbers.enumerated().forEach { (index, number) in
print("\(index + 1): \(number)")
}
Array
の配列インデックスのループ
非推奨Cスタイルバージョン:
let someNumbers = [2, 3, 45, 6, 8, 83, 100]
for var i = 0; i < someNumbers.count; i++ {
print(i)
}
indices
を使用して列挙されたArray
のすべてのインデックスのfor-in
ループ:
let someNumbers = [2, 3, 45, 6, 8, 83, 100]
for index in someNumbers.indices {
print(index)
}
Dictionary
のループ
Dictionary
)のすべてのインデックスと値のfor-in
ループ:
let scores = ["Bob": 42, "Alice": 99, "Jane": 13]
for (name, score) in scores
{
print("\(name)'s score is \(score)")
}
While
ループの始まりで評価された条件が** false **になるまで、コードを繰り返します。
let someNumbers = [2, 3, 45, 6, 8, 83, 100]
var i = 0
while(i < someNumbers.count) {
print(someNumbers[i])
i += 1
}
Repeat-While
ループの終わりで評価された条件が** false **になるまで、コードを繰り返します。
let someNumbers = [2, 3, 45, 6, 8, 83, 100]
var i = 0
repeat {
print(someNumbers[i])
i += 1
} while(i < someNumbers.count)
Break
ループの現在の反復を終了し、プログラムのフロー制御がループを終了します。
ラベル無しのbreak
現在の反復を終了し、ループを終了します:
for i in 1...4{
if i == 3 {
break
}
print("i = \(i)")
}
}
アウトプット:
i = 1
i = 2
アウトプット:break
ラベル付きbreakステートメントでネストされたループを使用する場合、ラベル付きループの現在の反復を終了し、ラベル付きループを終了します:
outerloop: for i in 1...3{
innerloop: for j in 1...3 {
if j == 2 {
break outerloop
}
print("i = \(i), j = \(j)")
}
}
アウトプット:
i = 1, j = 1
Continue
ループの現在の反復をスキップし、プログラムのフロー制御は次の反復に進みます。
ラベル無しのcontinue
ループの現在の反復をスキップして、次の反復に進みます:
for i in 1...4{
if i == 3 {
continue
}
print("i = \(i)")
}
}
アウトプット:
i = 1
i = 2
i = 4
ラベル付きのcontinue
ラベル付きcontinueステートメントでネストされたループを使用する場合、ラベル付きループの現在の反復をスキップして、次のループに進みます:
outerloop: for i in 1...3{
innerloop: for j in 1...3 {
if j == 2 {
continue outerloop
}
print("i = \(i), j = \(j)")
}
}
アウトプット:
i = 1, j = 1
i = 2, j = 1
i = 3, j = 1
高階関数
配列を操作する場合、たとえば、各配列要素に関数を適用する場合、または配列を1つの結果に減らす場合は、高階関数を使用する必要があります。
Array.filter(_:)
配列内のすべてのアイテムを反復処理し、条件によってフィルタリングされたすべての要素を含む配列を返します。
let someNumbers = [2, 3, 45, 6, 8, 83, 100]
let numbersUnder10 = someNumbers.filter { $0 < 10 }
print(numbersUnder10)
Array.map(_:)
配列内のすべてのアイテムを反復処理して変換し、変換された要素を含む配列を返します。
let someNumbers = [2, 3, 45, 6, 8, 83, 100]
let doubledNumbers = someNumbers.map { $0 * 2}
print(doubledNumbers)
Array.reduce(_:_:)
配列内のすべてのアイテムを反復処理し、1つの値になるまでそれらを組み合わせます。
let someNumbers = [2, 3, 45, 6, 8, 83, 100]
let sum = someNumbers.reduce(0) { $0 + $1}
print(sum)