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

SwiftでLTMorphingLabelを使ってみた

1 はじめに2 LTMorphingLabelとは3 準備4 実装 はじめに 今回はLTMorphingLabelというライブラリが面白そうなので使ってみました。 LTMorphingLabelとは ...

swift

Swiftでのパーミッション取得を簡単に

1 はじめに2 準備3 実装3.1 とりあえず表示3.2 カスタマイズ4 さいごに はじめに こんにちは、nukkyです。 今回は、アプリにはつきもののユーザへのパーミッションの確認を 簡単に行えるラ ...

swift

[Swift3] Segmentを使った画面切り替え (Extra View)

1 はじめに1.1 前提条件2 Segmentの用意3 表示したいViewを用意4 Extra Viewsに追加5 Segmentでの切り替え5.1 デフォルトで表示されるViewを設定5.2 Seg ...

swift

iOSでライブラリFSCalendarをつかって簡単にカレンダー表示

1 はじめに2 準備3 実装3.1 Storyboard3.2 コード3.3 タップの取得4 さいごに はじめに こんにちは、nukkkyです。 ツール系アプリ開発時にカレンダー表示を よく使うと思い ...

[初心者向け]Xcodeの使い方(よく使うショートカットキーとエディタ)

1 はじめに1.1 前提条件2 ショートカットキー2.1 コメントアウト2.2 インデント2.3 ファイル内検索2.4 プロジェクト内検索2.5 クリーン2.6 ビルド2.7 ラン3 エディタ3.1 ...

フォロー

follow us in feedly

AppLink

英語

page_side_300rect

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

アプリ情報

目標を達成したい方を応援する、TODOアプリもリリースしております。 下記のアイコンから無料でダウンロードできます。

Web版MyCoach

私たちはより広い方にコーチングを知ってもらいたいと考えています。 下記のサイトにて、コーチの方々を紹介しておりますので、よろしければご覧ください。