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]AlamofireでファイルのUploadをしてみる

1 はじめに2 CarthageでAlamofireを導入する2.1 CartFileの作成とライブラリのダウンロード2.2 Xcodeの設定3 Alamofireとは3.1 AlamofireのHT ...

CollectionViewのカスタムレイアウトを作ってみた

1 はじめに2 作成するレイアウト2.1 レイアウト2.2 手順3 prepare( )4 layoutAttributesForItem(at indexPath: IndexPath)5 layo ...

Flutter開発のはじめかた 開発環境セットアップ〜Widtgetの解説

1 はじめに2 セットアップ2.1 Flutterのインストール2.1.1 Android環境のセットアップ2.1.2 Xcodeのインストール2.1.3 IDEのセットアップ(Android Stu ...

[Swift]カメラデバイスで使用できる解像度の中で、最大のサイズを設定する

1 はじめに2 フォーマット一覧の取得3 フォーマットを設定する4 カメラデバイスで使用できる解像度の中で、最大のサイズを設定する5 さいごに6 おすすめ書籍 はじめに iOSでカメラの映像を画面に表 ...

CollectionViewの並び替えを実装する

1 はじめに2 実装方法3 手順4 ロングタップの実装5 並び替えを可とする6 並び替え時のデータ処理7 次回表示時8 他に9 さいごに10 おすすめ書籍 はじめに こんにちは。Yossyです。 前回 ...

フォロー

blog-page_side_responsive

2018年7月
1234567
891011121314
15161718192021
22232425262728
293031  

アプリ情報

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