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

page_footer_300rect




page_footer_300rect




-iOS
-

執筆者:


comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

swift

Swift3 [XIBファイル] コードでの呼び出し方まとめ

1 はじめに1.1 前提条件2 TableViewCell2.1 XIBの準備2.2 ViewControllerでの呼び出し3 CollectionView3.1 XIBの準備3.2 ViewCon ...

[Swift4]StringのSwft4変更点と文字列操作

1 はじめに2 Swift4でのString変更点2.1 コレクション化2.2 文字列長の取得2.3 文字列を複数行で定義3 文字列操作3.1 英大文字、小文字変換3.2 ひらがな、カタカナ変換3.3 ...

swift

Swift3でRealmを使ってみる

1 はじめに1.1 前提条件2 事前準備2.1 Realmのインストール・設定2.1.1 Carthageファイルの生成2.1.2 CarhageにてRealmをインストール2.1.3 Realmをイ ...

Sign in with Appleの実装

1 はじめに2 Sign in with Appleとは2.1 iOS レビューガイドライン2.2 つまり3 準備4 実装5 デザイン6 さいごに7 おすすめ書籍 はじめに こんにちは、nukkyです ...

swift

[Swift3]で直感的にアニメーションが記述できるライブラリ「Cheetah」

1 はじめに2 準備3 実装3.1 準備3.2 移動3.3 回転と拡大3.4 速度調整3.5 繰り返し3.6 アニメーションの終了4 さいごに はじめに こんにちは、nukkyです。 今回は、仕事でV ...

フォロー

follow us in feedly

page_side_300rect

2018年7月
« 6月 8月 »
1234567
891011121314
15161718192021
22232425262728
293031 

アプリ情報

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