for文
構文
for カウンタの変数名 in 範囲 {
繰り返しの処理
}
使用例
//繰り返しの回数指定(1から10まで)
for index in 1...10 {
print("index:\(index)")
}
//配列の要素を列挙
var array = ["きつね","たぬき","たまご"]
for content in array {
print("中身:\(content)")
}
繰り返し指定で最後の位置を含みたくない場合(範囲指定)
..<
を利用する
//繰り返しの回数指定(1から9まで)
for index in 1..<10 {
print("index:\(index)")
}
インデックス番号を使用しない時
_
で省略可能
for _ in 1..<10 {
print("Oh!!")
}
for-in-enumerated
インデックス番号と繰り返し項目の要素の両方を使いたい時に便利
構文
for (インデックスの変数, 項目名) in 繰り返し項目名.enumerated() {
//繰り返し処理
}
使用例
var muArray = ["せいこ","アララ","きのい"]
for (index, value) in muArray.enumerated() {
print("\(index):\(value)")
}
if文
var score = 79
if score > 90 {
print("天才!!")
} else if 80 <= score && score <= 90{
print("合格!!")
} else {
print("残念、不合格!!")
}
switch文
switch score {
case 100:
print("大天才!!!")
break
case 80...99: //80~99
print("合格")
break
default :
print("残念、不合格!!!")
break
}
列挙型(enum)
列挙した値の管理に適する。
書式
enum 定義名称: 型名 {
case 列挙子 = 値
case 列挙子 = 値
}
## 使用例
```swift
enum GameState: Int {
case Playing = 1
case GameOver = 2
}
var state: GameState = GameState.Playing
print(state) //列挙子(Playing)
print(state.rawValue) //列挙子に対応する値(1)
Switch文とenum値を組み合わせて使用する
enum GameState {
case Playing = 1
case GameOver = 2
}
var state = GameState.Playing
//すべてのenum値のcaseを用意しなければならない
switch state {
case .Playing:
print("ゲーム中")
case .GameOver:
print("ゲーム終了")
}
while
条件を満たすまでの間ループを繰り返す
var x = 1
while x < 100 {
x = x * 2
print("値は:\(x)です!")
}
guard文
変数に適切な値が入っているかどうかを判別する関数
書式
guard let チェック後に利用する変数名 = チェックする変数名 else {
//変数が適切な値でなかった場合の処理
}
使用例
var fullFuel = 100
func checkFuel(fullFuel: Int?) {
guard let fuel = fullFuel else {
print("もう走れません")
return
}
print("まだ走れる!")
}
checkFuel(fullFuel: fullFuel)
値を書き換える構文
filter
配列の中から特定の要素のみを取り出したいときに便利
var numbers = [1,21,522,34,16]
let results = numbers.filter{ (x:Int) -> Bool in
//100より小さい値のみを取り出す
if x < 100 {
return true
} else {
return false
}
}
print("結果:\(results)") //結果:[1, 21, 34, 16]
map
配列の中の特定の値を変更して新たに配列を生成する。
var numbers = [1,21,522,34,16]
let mapResults = numbers.map{ (x:Int) -> Int in
//100より小さい値を2倍にして返す
if x < 100 {
return x * 2
} else {
return x
}
}
print("結果:\(mapResults)") //結果:[2, 42, 522, 68, 32]
reduce
繰り返し項目(配列等)の値を順次処理する。
var numbers = [1,21,522,34,16]
let reduceTotla = numbers.reduce(0){ (total:Int, score:Int) -> Int in
//配列の中身を値を足し合わせる。初期値は0。
return total + score
}
print("合計値:\(reduceTotla)")
また、引数に$0
、$1
を利用して簡潔に書くこともできる
var numbers = [1,21,522,34,16]
let total = numbers.reduce(0, {$0 + $1})
print("合計値:\(total)")
sort
繰り返し項目の値の並び替え。昇順や降順など。
var numbers = [1,21,522,34,16]
numbers.sort{ (value1:Int, value2:Int) -> Bool in
value1 < value2 //昇順にソート
}
print("ソート結果:\(numbers)") //ソート結果:[1, 16, 21, 34, 522]
$0
と$1
を利用した簡潔な書き方
numbers.sort{$0 > $1} //降順
print("ソート結果:\(numbers)") //ソート結果:[522, 34, 21, 16, 1]
for-in-where
繰り返し処理内にて、where句を使用することで特定の値のときは処理を行わないみたいなことが可能。
//インデックス番号が4のときは処理を行わない
for value in 0...10 where value != 4 {
print("インデックス:\(value)")
}