Swift 2.0とオープンソース化が発表されたSwiftの制御構文――比較演算子、条件分岐(if、else、switch)、繰り返し(for、while)&Playgroundのグラフで確認:初心者のためのSwiftで始めるプログラミング入門(4)(3/4 ページ)
本連載では、これからプログラミングやiPhoneアプリ開発を始めてみたい方を対象に、開発に必要な知識を基礎から解説していきます。今回は、Swiftの制御構文として、比較演算子や条件分岐(if、else、switch)、繰り返し(for、while)について解説し、Playgroundのグラフで確認してみます。
switch文で値によって処理を分岐させよう
switch(スイッチ)文は値に応じて処理を分岐させる制御構文です。「この値が◯◯◯だったら△△△を実行し、●●●だったら▲▲▲を実行する」といったようにプログラムの流れを制御できます。
switch文は次のように書きます。
switch 評価する対象の変数または定数 { case 値【1】: 変数または定数の値が値【1】だったときに実行する処理 case 値【2】: 変数または定数の値が値【2】だったときに実行する処理 default: 変数または定数の値がどれにも当てはまらなかったときに実行する処理 }
まず「switch」と書き、続けて評価する対象の値を書きます。続けて「{」と「}」の間に「case」を書き、条件となる値と「:」を書きます。「:」の後に条件となる値だったときに実行する処理を書きます。「case」は複数書くことができます。最後に「default」と「:」を書き、「:」の後にどの条件にも当てはまらなかったときに実行する処理を書きます。
それでは、プログラムを書いてみましょう。次のプログラムはきのこの種類を判別するプログラムです。
let きのこ = "しいたけ" switch きのこ { case "しいたけ": println("きのこの種類はしいたけ") case "まつたけ": println("きのこの種類はまつたけ") case "えりんぎ": println("きのこの種類はえりんぎ") default: println("謎のきのこ") }
「しいたけ」「まつたけ」「えりんぎ」の3つの「case」を作り、それぞれの値だったときに「println("きのこの種類は◯◯◯")」が実行されます。いずれの種類にも合わなかった場合には「println("謎のきのこ")」が実行されます。
またif文と同様、switch文で対象とする変数(または定数)の値と条件となる値は、同じ型でなければいけません(型の組み合わせによっては、評価できるように自動的に変換してくれる場合があります。特殊なケースになるので、今回は割愛させていただきます)。
caseは複数の値を条件にすることができる
上記のswitch文では、1つの「case」に対して1つの値のみ条件にしていましたが、この「case」1つに対して複数の値を条件にすることができます。
複数の値を条件にしたい場合は「case」の1つ目の値の後に「,」を書き、その後に2つ目の値を書きます。
switch 評価する対象の変数または定数 { case 値【1】, 値【2】: 変数または定数の値が値【1】または値【2】だったときに実行する処理 case 値【3】, 値【4】: 変数または定数の値が値【3】または値【4】だったときに実行する処理 default: 変数または定数の値がどれにも当てはまらなかったときに実行する処理 }
先ほどのプログラムを少し変えてみましょう。先ほどのプログラムは「case」にきのこの名前を平仮名で書いていましたが、この条件にカタカナと漢字を加えてみましょう。
let きのこ = "松茸" switch きのこ { case "しいたけ", "シイタケ", "椎茸": println("きのこの種類はしいたけ") case "まつたけ", "マツタケ", "松茸": println("きのこの種類はまつたけ") case "えりんぎ", "エリンギ": println("きのこの種類はえりんぎ") default: println("謎のきのこ") }
こうすることで「きのこ」の値にカタカナや漢字が入った場合でも、それぞれの「case」で判定できるようになりました。
caseは範囲を条件にすることができる
「case」は条件となる値を1つずつ指定するだけではなく、値と値の間となる範囲を指定することができます。
「case」の値を範囲指定したいときは、値と値の間を「...」でつなぎます。なお、範囲指定に使う値の型は数値の型(Int型、Float型、Double型)しか利用できません。
switch 評価する対象の変数または定数 { case 値【1】...値【2】: 変数または定数の値が値【1】〜値【2】の間だったときに実行する処理 case 値【3】...値【4】: 変数または定数の値が値【3】〜値【4】の間だったときに実行する処理 default: 変数または定数の値がどれにも当てはまらなかったときに実行する処理 }
範囲を指定する「case」を書いてみましょう。次のプログラムは松茸の価格を判定するプログラムです。1円から1万円の間であれば「println("松茸は10,000円以下")」が実行されます。
let 松茸 = 8000 switch 松茸 { case 0: println("松茸はタダ") case 1...10000: println("松茸は10,000円以下") default: println("高級な松茸") }
このように、範囲指定の「case」と値を1つずつ指定する「case」は1つのswitch文の中で組み合わせることができます。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- アップル、新プログラミング言語「Swift」「iOS 8 SDK」「Xcode 6」のベータ版を発表
米アップルが新しいプログラミング言語「Swift」と開発ツール「iOS 8 SDK」「Xcode 6」のベータ版を発表。その特徴と注目ポイントを紹介。 - iOS 8 SDK、Xcode 6、Swift 1.0がGMに。Apple Pay機能の組み込み、TestFlight Beta Testingも利用可能
米アップルが2014年9月9日に発表した内容の中から、iOS 8 SDK、Xcode 6、Apple Watch、Swift 1.0などに関する開発者向けの情報をまとめてみる。 - Swiftでの変数の定義、Xcodeでのアウトレット接続、iOSシミュレーターへの画像素材追加
iPhone 6/6 PlusアプリをSwift言語で作成してみたいという初心者向けにiOS 8の新機能を使ったアプリの作り方を一から解説する入門連載。今回は、Xcodeでアウトレットを接続する方法、Swiftでの変数定義の仕方、iOSシミュレーターへ画像素材を追加する方法などを解説します。 - OptionalなどSwiftとObjective-Cの違いを意識してPhotos Frameworkを使う
iPhone 6/6 PlusアプリをSwift言語で作成してみたいという初心者向けにiOS 8の新機能を使ったアプリの作り方を一から解説する入門連載。今回は、前回の記事で追加した写真の情報を「Photos Framework」の機能を使用して取り出し、写真の情報にひも付いた座標にピンを表示します。また、その過程でOptionalなどSwiftとObjective-Cの違いについて解説します。 - Swiftのカスタムクラスの作り方――プロトコル、サブクラス、イニシャライザー、タイププロパティメソッドのオーバーライド、デリゲートについて注釈の作成で学ぶ
iPhone 6/6 PlusアプリをSwift言語で作成してみたいという初心者向けにiOS 8の新機能を使ったアプリの作り方を一から解説する入門連載。今回は、前回の記事で追加した地図上の「注釈」を写真のサムネイルに差し替える課程でSwiftのカスタムクラスの作成手順について解説します。 - iOS 8アプリ開発のこれまで&Swift 1.2への対応、プロパティオブザーバーとwillSetの基本的な使い方、セグエを使った画面遷移
iPhone 6/6 PlusアプリをSwift言語で作成してみたいという初心者向けにiOS 8の新機能を使ったアプリの作り方を一から解説する入門連載。最終回は、これまでの連載を振り返り、これまで作成したPhotoKitを使ったサンプルアプリの仕上げとしてセグエを使った画面遷移を実装の仕方や、プロパティオブザーバーとwillSetの基本的な使い方を解説する。 - 外から見るWWDC 2014キーノート――Swiftに感じるAppleの本気
WWDC常連のドリキンが今年もキーノートを斬ります! 今回はメディアとエンジニアとで、反応が真っ二つに分かれる内容となりました。その理由をエンジニア視点で解き明かしていきたいと思います。 - Excelでプログラム作成を始めるメリットとマクロの基本
プログラミング初心者を対象にExcelマクロ/VBAを使った業務自動化プログラムの作り方を一から解説します。初回は、そもそもプログラミングとは何か、Visual BasicとVBAとマクロの違い、マクロの作り方、保存/削除、セキュリティ設定などについて【Windows 10、Excel 2016に対応】。