プログラムフロー制御

特定の条件で処理を分岐するなどする、基本的なステートメントをみていきましょう。 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 として記述します。

繰り返し処理(ループ)については、次をみてください。

ループとイテレータ

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Swift による iOS 開発入門