フォールスルーの使用方法概要
2022-02-28 09:53:59
swiftのswitchでは、caseの後にfallthroughを使うのは、breakなしのOC caseを使うのと同じです!
フォールスルーを使用する際の注意点としては
1. フォールスルーを追加すると、条件を満たすかどうかにかかわらず、[直後の] case または default 文を直接実行します。
var age = 10
switch age {
case 0... .10:
print("kids")
fallthrough
case 11... .20: print("child") .20:
print("big friends")
case let x:
print("\(x)-year-old friend")
}
出力結果です。
Little friend
Big friends
2. フォールスルー文の追加後、[直後の] case 条件で定数や変数を定義することはできません。
var age = 10
switch age {
case 0... .10:
print("kids")
fallthrough // error here
case let x:
print("\(x)-year-old friend")
}
プログラムがエラーを報告する。
'fallthrough' cannot transfer control to a case label that declares variables
理由推測。
最初のケースを実行("child"を出力)した後、次のケースが直接実行されることは最初のポイントから分かっており、次のケース条件では一時変数xを定義しています。このことから、前のケースから直接入ってくる変数xは存在しないので、case文の中でxを使うと明らかに間違っていることが分かります。swiftのような安全な言語では当然このようなことは許されないので、フォールスルーでは次のcase条件で定数/変数を定義できないようにしています - 直後のcaseを除き、他のcaseでは定数/変数を定義できます(最初のコード例と同じです)。
3. フォールスルー後の次の条件文に直接ジャンプし、この条件文以降の文は実行されない
var age = 10
switch age {
case 0... .10:
print("kids")
fallthrough
print("I jumped oh") //this sentence is not executed
case 11.... .20:
print("big friend")
case let x:
print("\(x)-year-old friend")
}
出力結果です。
Little friend
Big friends
関連
-
[解決済み】Thread 1: signal SIGABRTエラーを解決するには?[クローズド]
-
[解決済み】インスタンスメンバを型で使用することができない
-
[解決済み] スウィフト 2: !, ?-" オプション型「...」の値がアンラップされていない"
-
[解決済み] Swift 5でXOR?
-
[解決済み] swift 3 エラー。引数ラベル '(_:)' は利用可能なオーバーロードに一致しません。
-
[解決済み] メインスレッドチェッカー バックグラウンドスレッドで呼び出された UI API: -[UIApplication applicationState].
-
[解決済み] Swift 3でdispatch_onceはどうなる?
-
[解決済み] Swift stdlib ツール エラー
-
[解決済み] Swiftで乱数を生成する方法とは?
-
[解決済み] SwiftUIのFacebookログイン。FacebookのIDをビューに戻すには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み] Swift presentViewController
-
[解決済み] XCTest の基礎となるモジュールをロードできない
-
[解決済み] 型のインスタンスでは静的メンバを使用できません。
-
[解決済み] Swiftでbase64StringをStringに変換する方法とは?
-
[解決済み] Swift言語におけるエクスクラメーションマークの意味とは?
-
[解決済み] このコンテキストで型検索を行う場合、「メソッド」は曖昧である、Alamofireのエラー
-
[解決済み] Swiftで文字列が別の文字列を含んでいるかどうかを確認するには?
-
[解決済み] 使用しているSwiftのバージョンを確認するにはどうすればよいですか?
-
[解決済み] なぜswiftではアンダースコアが必要なのですか?