【Swift】if let文ってどういうこと?わかりやすく解説

今回はSwiftにおけるif let文について。

iOSアプリ開発をし始めた頃に下記コードのif let ~の部分が全く理解できず、だいぶ苦しんだ記憶がある。

理解してしまえば、「なるほど、そういうことか!」という内容なのだが、理解するまでにちょっと時間が掛かったので、備忘録として理解しやすい形で記事にしておこうと思う。

私と同じように理解に苦しんでいる人の参考に少しでもなれば幸いだ。

if let 文はどういう意味?

結論から言うと、if let文は対象のプロパティ(オプショナル型)の値がnilかどうかチェックし、nilではない場合(値が存在する場合)はそのプロパティをアンラップ処理してくれる便利な仕組みだ。

上記コードにおいて、if letでチェックの対象となるプロパティが productPrice だ。

if let がtrueになる場合

このproductPriceプロパティ に値が存在する場合、priceにその値が代入される。

そして、if文の条件式がtrueとなり、直後の{~}が実行される。

例えば、productPrice=300の場合は下記となる。

SF_iflet①

productPrice=300 、つまり値が存在するので、定数priceにproductPriceの値が代入される。

定数 price に値が代入されるので、if 文の条件がtrueとなり、直後の青色部分(then節)が実行される。

その結果、コンソールには、

「商品の価格は300円です。」

と表示されるのだ。

if let がfalseになる場合

一方、productPriceプロパティ に値が存在しない=nilの場合、priceへの値の代入は行われない。

そして、if文の条件式はfalseとなるので、else以降の青色部分が実行される。

SF_iflet②

その結果、コンソールには

「商品の価格が設定されていません。」

と表示される。

if let を使わずに書く場合

上記コードをif letを使わずに書くと下記のように変換できる。

productPriceに値が存在するかどうかを判定し、nilではない場合はオプショナル型のproductPriceをアンラップしてpriceに値を代入している。

まとめ

Swift における if let 文の要点は下記だ。

  • if let は対象のオプショナル型のプロパティがnilかどうかをチェックし、nil ではない場合はアンラップしてくれる便利な仕組み。
  • 対象のプロパティに値が存在する場合は直後の{~}( then節)が実行される
  • 対象のプロパティ= nil の場合はelse節が実行される

if let の理解に苦しんている人の参考に少しでもなれば幸いだ。

おすすめの記事