Swift学習⑧(codebelle)switch

◆ switch

〜まえがき〜

 

 環境xcode 、paiza.io(ブラウザエディタ)

 教材:codebelle、その他webサイト

【本ブログについて】

・codebelle等の講義を参考に自分なりにアレンジしたコードを載せ理解を深めていく。

・又、当ブログは非商用でありcodebelle公式のブログではない。

・《ハック》(改造)は教材での学習のみでは納得できなかった部分について、コードを追加・削除してみたり、オリジナルのコードを作成し試行錯誤してみた箇所。

・《観察》は《ハック》についての考察や、教材もしくはググって参考にした事について、自分なりに理解を深める箇所。

・最近サボり気味だったので、気張りたい

 

◆ ループ処理・・・条件によって行動を変化させる「制御文」を用いた処理

制御文(ループ処理){for,while

(条件分岐) {if,switch

◆ switch

多数の分岐処理が可能。

case で比較対象(定数など)を指定し、一致するcase 文を実行

どの条件にも当てはまらない場合は「default」を実行

default は最後に書かなければいけない

何も処理したくないときは、default:に「break」と記述すればおk

【書式】

switch 定数や式 {
case 条件1:
//処理...
case 条件2:
//処理...
case 条件3:
//処理...
default:
//処理...
}

【例】おみくじを作ってみる

let kuz = 4
switch kuz {
case 1:
print("大吉です")
case 2:
print("中吉です")
case 3:
print("小吉です")
case 4:
print("末吉です")
case 5:
print("凶です")
default:
print("紙くずです")
}
出力↓
末吉です

《観察》
if で作ろうと思ったらめちゃくちゃめんどくさかった。
case 処理を連続して実行させる方法

【書式】

let kuz = 4
switch kuz {
case 1:
print("大吉です")
case 2:
print("中吉です")
case 3:
print("小吉です")
case 4:
print("末吉です")
fallthrough
case 5:
print("凶です")
default:
print("紙くずです")
出力↓
末吉です
凶です

《観察》

①print 末吉の後にfallthrough → print 末吉・凶を実行
②print 末吉とprint 凶の後にfallthrough →print 末吉・凶・紙くずを実行
③print 末吉とprint 大吉の後にfallthrough → print 末吉のみ実行
上記の結果から分かったこと。
→fallthrough は次のcase 文を実行する

◆ 1 つのcase に複数の条件で処理させる(A 又はB のときに実行)

【書式】

case 条件1,条件2 : //処理

【例】一筆書きの記号を出力

var hude = "□"
switch hude {
case "○","□","△":
print("一筆である")
case "×","◎","※":
print("一筆ではない")
default:break
}
出力↓
一筆である

◆ 範囲を指定して処理させる

【書式】

case (10...20): //10 から20 の値なら実行
【例】値によって等級が決まる

let price = 75
switch price {
case (0...50):
print("C 級")
case (51...99):
print("B 級")
case(100):
print("A 級")
default:break
}
出力↓
B級

《ハック》

範囲をダブらせてみた

let price = 101
switch price {
case (0...50):
print("C 級")
case (51...102):
print("B 級")
case(100...200):
print("A 級")
default:break
}
出力↓
B 級

《観察》

A 級は出力されなかった。

最初に合致した条件だけ実行される模様

fallthrough(フォールスルー)してみる

《ハック》

let price = 101
switch price {
case (0...50):
print("C 級")
case (51...102):
print("B 級")
f
allthrough
case(150...160):
print("A 級")
default:break
}
出力↓
B 級
A 級

◆ タプルを使う

【書式】

case("A",""):
print("A だけの時")
case("","B"):
print("B だけの時")
case("A","B"):
print("A&B の時")
【例】
let eat = ("唐揚げ","カレー")
switch eat {
case("唐揚げ",""):
print("油を用意")
case("","カレー"):
print("じゃがいもを用意")
case("唐揚げ","カレー"):
print("大変")
default:break
}
↓出力
大変

《観察》
if 文よりも使いやすい
コードがシンプルで見やすい
case 文後の:を付け忘れる事が多い
default を忘れてしまうことが多い