if let
変数をステートメントの外側に公開するのは意味がありません。
if let json = ... {
//This code will only run if json is non-nil.
//That means json is guaranteed to be non-nil here.
}
//This code will run whether or not json is nil.
//There is not a guarantee json is non-nil.
やりたいことに応じて、他にもいくつかのオプションがあります。
必要な残りのコードjson
はif
. if
あなたは、ネストされたステートメントが「賢いか、可能か」さえわからないと言いました。それらは可能であり、プログラマーはそれらを頻繁に使用します。別の関数に抽出することもできます。
func doStuff(json: String) {
//do stuff with json
}
//...
if let json = ... {
doStuff(json: json)
}
JSON が であってはならないことがわかっている場合はnil
、次のように強制的にアンラップできます!
。
let json = ...!
guard
ステートメントを使用して変数をグローバルにすることができます。内のコードは、 の場合にguard
のみ実行されます。ステートメントの本体は、たとえば、エラーをスローするか、関数から戻るか、ラベル付きのブレークを使用して、囲んでいるスコープを終了する必要があります。json
nil
guard
//throw an error
do {
guard let json = ... else {
throw SomeError
}
//do stuff with json -- it's guaranteed to be non-nil here.
}
//return from the function
guard let json = ... else {
return
}
//do stuff with json -- it's guaranteed to be non-nil here.
//labeled break
doStuff: do {
guard let json = ... else {
break doStuff
}
//do stuff with json -- it's guaranteed to be non-nil here.
}