カンマ演算子を使おう
例えば[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句に飛んだのかわからない