iOS

【Swift】switch文でタプルを使う

投稿日:

はじめに

こんにちはsuzukiです。本日で投稿が2回目となります。
今後ともよろしくお願い致します。

最近switch文でタプルを使用しているコードを読む機会があり、
タプルをswitchに渡す処理は自身で書いたことなかったため、備忘も兼ねてまとめました。

switch文にタプルを組み合わせて使うことで
ネストを浅くし条件分岐がわかりやすくすることができる点に魅力を感じております。

タプルとは

複数のデータを一つの組みにしてまとめたものです。
専用のクラスや構造体を定義するほどでもない場合によく使われます。

タプルのメリット
ArrayとDictionaryと比較すると型の制約が緩く感じます。
たとえばIntとStringとDataなど異なる型をそのまま扱うことができます。

タプルのデメリット
・要素の追加はできない
・mapやforeachなどの項目の操作ができない

使い方
下記の様にシンプルに記述ができます。

戻り値として複数の値をまとめたい時などに便利です。

上記の場合だと通信結果のData?型とInt型とError?型をまとめて返却しています。
今回の記事ではrequestData()を元に呼び出し側でそれぞれ値の評価を行い、分岐の作成を行います。

タプルを使うswitch文について

それではrequestData()を元に今回使用させていただくswitchの評価について先に説明致します。

  • ワイルドカード
    値の評価をしないときは“_”を設定します。全部評価しない場合は必ずtrueです
    case (_,_,_):
  • オプショナルな値の評価nil以外
    “let” (変数名+?)”の様に記述すると変数名にはUnWrapされた値が入ります。nilの場合はfalseです。
    case let (data?,_,_):
  • 範囲指定
    数値型が設定されている場合は“200…300”の様な形で範囲の指定が可能です。
    case (_,200...300,_):

テストコード

それでは上記を踏まえてrequestData()を通信結果としてハンドリングして見ます。
分岐内容はコメントを参照ください。

通信のエラーハンドリングを細かく行う場合はこちらだけでは足りなくなるかも知れません。
後から変更を行う場合もif文に比べてswitch文の方が、分岐の追加はシンプルに可能です。

さいごに

最後まで有難うございます。
今回は実際に使われていた通信結果っぽいタプルを元に説明させて頂きました。
今回は細かな指定をする必要がなかったので触れていませんが、where節を利用することも可能です。

if文でネストが深くなったり、条件が複雑化して可読性が下がってしまっている時などに検討いただければと思います。

blog-page_footer_336




blog-page_footer_336




-iOS
-

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

[Swift]ループできるページングビューをUIScrollViewで作ってみた

1 はじめに1.1 前提条件2 ページングビューとは3 実装3.1 Storyboardの準備3.2 コードの実装4 仕組み5 さいごに はじめに こんにちは、nukkyです。 スライドショーやウォー ...

iOS13ダークモード対応

1 はじめに2 一時しのぎ3 実装3.1 UI Element Colors3.2 Color Set3.3 コードで描きたい3.4 カスタムのカラーを定義する3.5 画像をモードで動的に変更したい4 ...

MapKitをSwiftUIで使ってみた

1 はじめに2 地図の表示2.1 クリッピング表示3 地図にアノテーションを表示する3.1 マーカーの配置3.2 ピンの表示3.3 アノテーションのカスタマイズ4 さいごに5 おすすめ書籍 はじめに ...

SwiftGenを使ってみた

1 はじめに2 SwiftGenの特徴2.1 コードジェネレートするリソースを選択することができる2.2 コードジェネレートするのにビルドが必要ない2.3 設定ファイルベースである3 インストール4 ...

swift

[Swift]UIViewからUIImageを作成しローカルに保存

1 はじめに1.1 前提条件2 実装2.1 UIViewからUIImageへ2.2 UIImageをローカルに保存2.3 おまけ:画像のリサイズ3 さいごに4 おすすめ書籍 はじめに こんにちは、nu ...

フォロー

blog-page_side_responsive

2018年7月
1234567
891011121314
15161718192021
22232425262728
293031  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。