ガードlet構文を使用してオプションのラップを解除しようとしています。ガードletの目的は、オプションをアンラップし、.none/nilに遭遇した場合にプロシージャを中止することです。Swift3エラー処理によるオプションの連鎖とアンラッピング
これは、ガードレットの右側の式からオプションが法的に返されなかったと考えていました。しかし、2つのオプション生成式をRHS式に結合した場合、それらのオプション生成式の1つのみがガードletの目的のために評価されます。例えば、以下のparsedResponse変数は、オプションを保存します:
guard let parsedResponse = try? (JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String:Any]) else {
displayError(withString: "Error parsing data as JSON")
return
}
みては?キーワードは条件付きキャスト演算子と同様に?をオプションとして生成します。これらの2つの演算子のいずれかを試してみると!または期待通りの結果を得ることができます。
これは予期された動作ですか?私はこのようなことをしようとすると、オプションの連鎖に似た動作が起こり、RHSの評価の実行パスに沿ってどこでも.none/nilが発生したときにガードletが 'else'コードを実行すると仮定していました。しかし、これは当てはまりません。
ガードletによって導入された定数/変数にオプションの評価を持たせることは、どういう意味ですか?
dupのように見えます。 – PeejWeej
ありがとうございます。これを確認できますが、退屈な構文については正しいです! :)。私の悪いことは悪いです - ありがとうございました! – Cognitio