Swiftの制御構造を説明します。少し独特な部分もありますがJavaやC言語など他のプログラミングに親しい方にも分かりやすいものになっています。
if文
if文は条件に一致するかしないかで処理を分岐する構造です。
// if文: 条件の丸括弧は省略可能
if x == y {
print("xとyは同じです")
} else {
print("xとyは異なります")
}
三項演算子
条件に一致した場合は前の値、一致しない場合は後の値が返される構文です。
// 三項演算子: 条件が成立すると最初の値、成立しない場合は後の値が採用される
var z = x == y ? "xとyは同じです" : "xとyは異なります"
switch文
条件に対する処理が複数存在する場合に仕様する構文です。C言語と異なり各case内にbreakを入れる必要はありません。
// switch文: 条件に一致するcase節の内部が実行される。breakを入れなくてもそこで処理が終わる
switch x {
case "hello":
print("helloに一致")
case "hello2":
print("hello2に一致")
default:
print("それ以外です")
}
Enumerationに対するSwitch文の場合全ての条件をcase節としてリストアップする必要があります。どれかを省略するとdefaultが必須となります。
// Enumerationに対するSwitch文
enum Direction {
case North
case South
case East
case West
}
let d = Direction.North
switch d {
case .North:
print("方向は?")
print("北です")
case .South:
print("方向は?")
print("南です")
default: // Enumerationの場合全ての条件をリストアップする必要あり(.Nort / .South / .East / .West)。省略する場合はdefaultが必須
print("方向は?")
print("その他です")
}
// => 方向は?
// 北です
for-inによるループ
配列の中身をループしたい場合。
let numbers = [100, 90, 80, 70]
for num in numbers {
print(num)
}
for-in strideによるループ
数字のインデックスを使いたい場合次のようにループします。
//for-in stride: 0〜2までをループ
for i in 0.stride(to: 3, by: 1) {
print(i)
}
while文
whileで指定された条件が成立する間ループします。
var n = 10
while n < 100 {
print(n)
n += 10
}
repeat-while文
こちらもwhileで指定された条件が成立している間ループします。違いは条件判定が処理の後で行われることです。
repeat {
print(n)
n += 10
} while n < 100
例外処理
例外を投げてキャッチすることができます。
//例外処理
enum MyErrors: ErrorType {
case MyError1;
case MyError2;
}
func errorFunc() throws {
throw MyErrors.MyError1
}
do {
try errorFunc()
} catch {
print("catch \(error)")
}