Swift実践入門
スポンサーリンク

制御構文についてはすでに基本的なことは学習済みですが、新たな気づきがあったらココに記録しておきます。

制御構文...プログラムの実行フローを制御(条件分岐、繰り返し等)するための構文。

分岐ができる制御構文

if文/guard文/switch文

 

繰り返しができる制御構文

for文/while文

 

プログラムの制御を移す制御構文

fallthrough文/break文/cintinue文

 

if case文

条件の成立がパターンマッチ(特定の値がパターンに一致するか評価すること)によって表現できる場合はif文ではなくif case文を使う。

書式
if case パターン = 制御文 {
パターンマッチした場合に実行する文
}
 

guard文

条件を満たさない場合の処理を記述する構文。条件を満たさない場合は【return/break/continue/throw】などを使いスコープを抜ける処理を書く必要がある。

書式
guard 条件式 else {
条件式がfalseの場合に実行される処理
return/break/throw等でスコープ外に退出
}
aaa(xxx: -1)は条件式がfalseのため、else{}内の処理が実行されますが、aaa(xxx: 1)はtrueのためelse{}内の処理はスキップされます。

もちろんif文でも同じことを表現できます。

 

guard let文

if文のように、guard文でもguard let/guard case文が使えます。

if let文との違いは、guard let文の場合はguard let文で定義された変数や定数がguard文以降も使える点です。(guard文以降では変数・定数の存在が保証されているため)

条件に応じて早期退出するコードならifよりもguardの方が簡潔。

 

switch文

複数の条件を持つ条件分岐に使うswitch文ですが、「where」を使うことでケースにマッチする条件を追加できます。

 

 

for-case文

for-in文の要素の前に「case」を追加してパターンを記述し、そのパターンにマッチするした要素だけを列挙する繰り返し文です。

書式
for case パターン in 値の連続 {
要素がパターンにマッチした場合に実行される文
}
 

repeat-while文

条件式が成り立つ限り繰り返し続けるwhile文ですが、「repeat」を使うと最低でも1回は繰り返すことができます。

 

プログラムの制御を移す文

プログラムの制御を移す文は次の5つ。

fallthrough文/break文/continue文/return文/throw文

fallthrough文

switch文において現在のケースの実行を終了し、次のケースを実行する。

 

break文

switch文のケースの実行や繰り返しを中断するために使用します(for/while文でも繰り返しを中断できる)

guard文でスコープから抜ける時や、ケース内に処理が存在しないときに使う。

 

continue文

break文と同じくキーワード以降の処理をスキップするが、繰り返し自体は継続されます。

例えば、for文で配列の要素に順次アクセスする際に、要素が特定の値だった場合にだけ処理をスキップできる。

 

なおbreak文とcontinue文はラベルを使用することもできる。

 

defer文

特定の文を、それが記述されている箇所よりも後で実行します。(遅延実行)

リソースの解放などで使われる。

書式
defer {
defer文が記述されているスコープの退出時に実行される文
}
値の更新(xxx += 1)は関数の実行の終了後です。そのため戻り値は30のままで、関数の実行後にアクセスすると更新された値である31を確認できます。

 

パターンマッチ

値の構造や性質を表すパターンによる評価。

  • 式パターン
  • バリューバインディングパターン
  • 列挙型ケースパターン
  • 型キャスティングパターン

 

式パターン

~=演算子による評価を行うパターン。

書式

式 ~= 評価

これがtrueの場合にパターンマッチ

このコードでは、

4 ~= xxx
がfalseで、

5...10 ~= xxx
がtrueのため、式パターン5...10にマッチしている。

 

バリューバインディングパターン

値を変数や定数に代入するためのパターン。識別子パターンと組み合わせることが多く、varまたはletを使う。

書式

var (識別子)パターン

let (識別子)パターン

識別子パターンは(yyy)はどのような値にもマッチします。

そして、マッチした値(5)を定数yyyに代入します。

 

列挙型ケースパターン

列挙型のケースとの一致を評価するパターン。

列挙型ケースパターンは ケース名(パターン, パターン...)という形式で他のパターンと組み合わせて使うと、連想値(列挙型のケースに紐ずいた付加情報で、同一のケースでも異なる連想値が持てる)のパターンマッチも可能になる。

連想値のパターンにバリューバインディングパターンを使用した場合、マッチして列挙型の連想値の値を取り出せます。

上の例で、(let r, let g, let b)はバリューバインディングパターンの識別子パターンであり、(13, 30, 255)にマッチします。

 

用語まとめ

ネスト

入れ子のこと

 

 

Swift(iOS)が学べるオンラインスクール ランキング
CodeCamp
CodeCamp
7〜24時まで授業可能で働きながらでも学べる!!
料金
講師の質
コースの種類
転職サポート
ポイント1エンジニア経験2年以上のベテラン講師によるオンライン授業
講師は全員が現役のエンジニアで、他のスクールによく見られるアルバイト講師ではありません。マンツーマン指導で自分のレベルにあったカリキュラムが組め、満足度も高いです。また、自社開発企業への転職指導にも定評があります。

ポイント2無料レッスン体験&無料受講相談で事前に話が聞ける
事前にレッスンを体験して授業の雰囲気や学習ペースを確認できます。またエンジニア転職を目指す方にはどのコースが向いているかなどが聞けるカウンセリング(受講相談)も無料。エンジニアの生の声が聞けるので自分が働き出した時のことをイメージできます。

TechAcademy

授業型ではなく自習型なので自分のペースで学べる
料金
講師の質
コースの種類
転職サポート
ポイント1自習スタイルでチャット質問は何回でも無料
自分の分からないところを質問するスタイルなのでわかるところはサクッと、わからないところはじっくりと、無駄なく学べます。チャットの質問が無料なので、料金を気にせず何回でも聞けます。また、メンターがつくのでカウンセリングで学習の進捗やモチベーションの管理もしてくれます。
ポイント21週間の無料体験と無料カウンセリング、安心の返金制度も
無料体験の期間は1週間もあり、納得してから契約できるので安心です。事前の無料カウンセリングでは、その人にあったアドバイス等をもらうことができるので気軽に活用しよう。転職保障コースの場合、転職できなかったら全額返金!!
侍エンジニア塾
プログラミングスクールの老舗NO.1
料金
講師の質
コースの種類
転職サポート
ポイント1歴史があるからノウハウも豊富
日本で初めてオンラインのマンツーマンレッスン指導を導入した実績十分のスクール。講師も現役エンジニアでメンタリングもあるため転職のサポートも手厚く、面接対策や自己PRのフィードバックまで対応してくれます。

ポイント2転職成功率94.1%、挫折率8%
コースによっては転職成功で受講料が0円に!!  絶対にエンジニアになりたいという意思があれば超低額で転職できます。事前の無料体験で相談も可能なため、まずは話だけ聞いてみるのもあり。

おすすめの記事