プログラムフロー制御
特定の条件で処理を分岐するなどする、基本的なステートメントをみていきましょう。 C 言語などの他のプログラミング言語を知っていれば、直感的にわかるものばかりです。
ざっとポイントを眺めていきましょう。
if 文
条件分岐の if 文です。
C 言語などと違うのは、if のあとの括弧 ( や ) が必須ではないというところでしょうか。
var a: Int = 1
var msg: String
if ( a == 1 ) {
msg = "a is 1"
} else {
msg = "a is not 1"
}
print( msg )
と次は同じです。
var a: Int = 1
var msg: String
if a == 1 {
msg = "a is 1"
} else {
msg = "a is not 1"
}
print( msg )
switch 文
Swift の switch 文は非常に柔軟で、安全に出来ています。主な特徴をみていきましょう。
- Swift の switch 文は exhaustive です。これは評価されるいずれかの case に合致しなければならないことを意味します。全てを網羅できない場合は default を必要とします。
- case 以下には必ず何か実行する文が必要です。何もしないことを意図する場合には break とします。
- 基本フォールスルーしません。つまり、break を書かないからといって、case ブロックをまたいで上から順に実行することはありません。明示的にフォールスルーすることを意図する場合には、fallthrough と記述します。
- まず、複数の値を case に書けます。
- タプルと where が使える。
var a = 1
var s: String = String()
switch a {
case 1, 2:
s = "A"
case 3...10:
s = "B"
default:
break
}
print( s )
実行結果は次の通り。
A
もしここで、次のように fallthrough としたら s は "B" になります。
switch a {
case 1, 2:
s = "A"
fallthrough
case 3...10:
s = "B"
default:
break
}
タプルと where が使えるという点については次の例をみてください。
var person = ("Ichiro", 30)
switch person {
case let (_, age) where age > 30:
print( " > 30 " )
case let (_, age) where age == 30:
print( " == 30 " )
default:
print( " default " )
}
実行結果:
== 30
この例のように case でタプルを評価することができます。この時の条件は where として記述します。
繰り返し処理(ループ)については、次をみてください。