LoginSignup
12
18

More than 5 years have passed since last update.

[Swift] guard 条件をカンマ区切りで連続して書く

Last updated at Posted at 2017-02-03

カンマ演算子を使おう

例えば[Any]な配列を受け取るが要素の型が特定のもので、なおかつ1番目の要素のみが必要なとき


guard let array = getArray() as? [Int],
    let first = array.first
    else { return }


guard let array = getArray() as? [Int],
    let first = array.first
    else {
        print("error")
        return
}

guard let array = getArray() as? [Int],
    let first = array.first
    else { return print("error") }  // 返値が不要な場合はこうとも書けます

(Xcodeでcontrol+iで整形すると上記のインデントになります。)

条件をカンマ演算子で連続して書くと ある条件がfalseとなったらそれ以降を無視してelse句に処理が移動します。

ややこしいデータ構造の場合はよりわかりやすくなる
[String:Any] の中に [String:Any]があり、その中に[Int]があるとき

guard let dataofkey = data["key"] as? [String:Any],
    let array = dataofKye["secondaykey"] as? [Int],
    let first = array.first
    else { return }

if文でも使えます

if let dataofkey = data["key"] as? [String:Any],
    let array = dataofkey["secondaryKey"] as? [Int],
    let first = array.first
    { print(first) }

メリット

  • ひとかたまりの複数の条件をまとめられる

デメリット

  • 見た目が拒絶される場合がある
  • どこでelse句に飛んだのかわからない
12
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
18