guard節とif letの違いについて SWIFT3

if -let文は、オプショナル型の有無に応じて分岐をする。また値が存在する場合には、値の取り出しも同時に行う。
if&nbsp; let 定数名 = optional<wrapped型>の値{

値が存在するときの処理

}else{

値が存在しないときの処理

}

 

これがオプショナルバインディングという書き方。

オプショナルに値が入っている場合は、if文に続く{}の部分が実行される

そのときに上記の場合、変数yを通して、処理を進められる。

これは

 

と同じことである。

変数をあとで利用しない場合このようにもかける。無名引数の_を利用する。

 

この記法が一般的である。

初めて見ると、戸惑うのではないかと思う。

!で強制アンラップする必要がないため、これがよく用いられる。

 

なぜそものもこのようにするかというと、SWFTでは、nilを許容しない設計となっています。

var hoge: String = nil  //これはエラー

よくObject-Cの時代にnilが入って、プログラムが落ちてしまうという事があり、それ故nilを許容しない設計となりました。これはいい!

しかしどうしてもnilが入る可能性がある処理もあり、そのようなときのためにWSIFTではオプショナル型という型を用意しました。

すべての型にはオプショナル型が用意されています。

 

これを利用すると,nilも代入可能になります。

var hoge: String = nil  //これはエラー

var hoge: String? = nil  //これはエラーになりません。

オプショナル型で宣言されているからです。

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です