# 繰り返し文

Swiftの繰り返し文には、for-in文、while文、repeat-whilte文などがあります。

# for-in文

for-in文は、要素を一つずつ取り出しながら繰り返し処理を実行させます。

for i in 1..<10 {
  print(i)
}

// 1
// 2
// 3
// 4
// 5
// 6
// 7
// 8
// 9

Array型を使った場合は、以下になります。

let array = [1,2,3,4,5]

for val in array {
  print(val)
}

// 1
// 2
// 3
// 4
// 5

Dictionary型を使った場合は、以下になります。

(key名, 値) in dictionary で、Dictionary型のkeyと値を参照することができます。

let dictionary = ["1":10, "2":20, "3":30, "4":40, "5":50]

for (key, value) in dictionary {
  print("\(key): \(value)")
}

// 5: 50
// 2: 20
// 1: 10
// 4: 40
// 3: 30

TIP

Dictionary型では、繰り返される要素の順番は保証されないので注意してください。

順番を保証したい場合は、KeyValuePairs を使用してください。

(Swift5.0 以前は DictionaryLiteral という名称でしたがSwift5.0以降では、KeyValuePairs という名前になりました。)


 











// KeyValuePairs型を指定する
let dictionary: KeyValuePairs = ["1":10, "2":20, "3":30, "4":40, "5":50]

for (key, value) in dictionary {
  print("\(key): \(value)")
}

// 1: 10
// 2: 20
// 3: 30
// 4: 40
// 5: 50

keyだけ取りたい時は、.keys を使うことができます。

let dictionary = ["1":10, "2":20, "3":30, "4":40, "5":50]

for key in dictionary.keys {
  print(key)
}

// 2
// 5
// 3
// 1
// 4

値だけとりたいときは、 .values を使うことができます。

let dictionary = ["1":10, "2":20, "3":30, "4":40, "5":50]

for value in dictionary.values {
  print(value)
}

// 20
// 30
// 40
// 50
// 10

# for-in stride文

for-in stride文は、一定の感覚で処理を繰り返すことができます。

for 変数 in stride(from: 開始値, to: 終了値, by: 間隔) で指定することができます。

for num in stride(from: 1, to: 100, by: 10) {
  print(num)
}

// 0
// 10
// 20
// 30
// 40
// 50
// 60
// 70
// 80
// 90

# while文

while文は、条件式を満たしてる間はずっと処理を繰り返します。

var a: Int = 0

while a < 10 {
  print(a)
  a += 1
}

// 0
// 1
// 2
// 3
// 4
// 5
// 6
// 7
// 8
// 9

# repeat-while文

while文は条件式がマッチした場合のみ実行されますが、repeat-while文では、条件を評価される前の初回は必ず実行されます。

以下は条件式にマッチしませんが、初回だけ実行されます。

var a: Int = 10

repeat {
  print(a)
  a += 1
} while a < 10

# break文

break文は、処理を途中で中断させることができます

for i in 1..<10 {
  if i == 5 {
    break
  }
  print(i)
}

// 1
// 2
// 3
// 4

# continue文

continue文は、処理を途中で中断させて、その次のループを実行させることができます。

// 5だけスキップさせる
for i in 1..<10 {
  if i == 5 {
    continue
  }
  print(i)
}

// 1
// 2
// 3
// 4
// 6
// 7
// 8
// 9