【Swift/SwiftUI】暗黙的オプショナル型の使用方法
本記事では、「?」をデータ型につけて宣言するオプショナル型とは異なるもう一つのオプショナル型としてSwiftUIにて使用できる暗黙的オプショナル型について解説していきます。
暗黙的オプショナル型とは
オプショナル型変数はnilを値として持つことが可能であり、nilを持っている可能性があるためif文やguard文などでnilであるかそうでないかを判定してからアンラップして使用する必要があります。
一方で処理の都合上、オプショナル型変数を使用する場面で絶対にnilではないため、if文などで確認する必要がない場面もでてきます。
そのような場面でnilチェック・アンラップを行わなくても普通の変数と同様の使い方ができるのが暗黙的オプショナル型変数です。
暗黙的オプショナル型の宣言
暗黙的オプショナル型変数の宣言は、型宣言時に「?」ではなく、「!」を使用します。
単純にprintするだけでわかる通り、オプショナル型変数の中身はOptional()でラップされていますが、暗黙的オプショナル型変数の値はすでにアンラップされた状態になっています。
var size : Int! = Int("350")
print("サイズは\(size)ml")
//実行結果: サイズは350ml
また、オプショナル型変数と暗黙的オプショナル型変数との間でデータの受け渡しを行うことも可能です。
実際にオプショナル型変数に以下のように暗黙的オプショナル型変数を代入した場合には、オプショナル型変数のデータをアンラップして使用することができます。
var second_size : Int? = nil
second_size = size
print("2番目のサイズは\(second_size ?? 0)ml")
//実行結果: サイズは350ml
nilを許容しないデータ型への代入
オプショナル型変数のデータを普通の変数に代入する際には以下のようにアンラップを行なう工程が必要になります。
暗黙的オプショナル型変数はそのまま特別な処理を挟むことなく、変数への代入が可能です。
var int_size : Int = 0
//オプショナル型の代入
int_size = second_size ?? 0
//暗黙的オプショナル型の代入
int_size = size
しかし、暗黙的オプショナル型変数の値がnilであるかどうかはコンパイラなどではなく、ソースコードの作成者自身で判断して使用することが必要になります。
nilが入ってくることを想定せずに、暗黙的オプショナル型変数を使用すると予期せぬエラーが発生してしまう点には十分に注意が必要です。
最後に
本記事では、暗黙的オプショナル型変数の扱い方について、普通のオプショナル型変数との違いを踏まえつつ紹介してきました。
基本的なオプショナル型変数については使用方法やアンラップ方法についても解説していますのでぜひそちらもご覧ください。
-
前の記事
【Swift/SwiftUI】オプショナル型変数のアンラップ方法一覧 2025.05.04
-
次の記事
【Swift/SwiftUI】オプショナル型(nil)を要素に持つ配列の扱い方 2025.05.18
