オプショナルとは
CoddyのSwiftジャーニー「基礎」セクションの一部。レッスン 11/86。
変数に値がまったく含まれない場合もあります。Swiftでは、値が存在しないことをオプショナル(optional)を使って表します。オプショナルは「値が存在し、それが x である」か、または「値がまったく存在しない」かのどちらかを意味します。
オプショナルを宣言するには、型の後ろにクエスチョンマーク ? を追加します:
var nickname: String? = "Alex"
var age: Int? = nil上の例では、nickname は値 "Alex" を保持していますが、age は nil(Swiftにおける「値がない」ことを意味する表現)を保持しています。通常の変数は nil になることができませんが、optional は可能です。
オプショナル(`optional`)は、中に何か入っているかもしれないし、空かもしれない箱のようなものと考えてください。中身を使う前に、実際に何か入っているかを確認する必要があります。これは Swift における主要な安全機能であり、予期しない欠損値によるクラッシュを防ぐのに役立ちます。
var score: Int? = 100
print(score) // Optional(100)
score = nil
print(score) // nil値を持つ optional を print すると、単に 100 と表示されるのではなく Optional(100) と表示される点に注意してください。内部の実際の値にアクセスするには、optional をアンラップ(unwrap)する必要があります。これについては今後のレッスンで詳しく説明します。
チャレンジ
簡単数値を受け取り、その数値がオプショナルとして印刷された場合にどのように見えるかを示す文字列を返す関数 createOptional を作成してください。
重要: この関数は String を返します。オプショナルのように見えるテキストを作成しているのであり、実際のオプショナル値を返すわけではありません。
値を含むオプショナルを印刷すると、Swift はそれを Optional(value) の形式で表示します。
関数の構文のおさらい: Swift では、値を返す関数は -> アローを使用して戻り値の型を指定し、return キーワードを使用して結果を返します。例:
func myFunction(param: Int) -> String {<br> return "result"<br>}
文字列補間(string interpolation)を使用して戻り値の文字列を構築できます: "Optional(\(value))" — \(value) の部分で数値を文字列に直接挿入します。
パラメータ:
value(Int): オプショナル形式でラップする数値
戻り値: Optional(value) 形式の文字列。ここで value は提供された数値です。
例: 入力が 100 の場合、"Optional(100)" を返します。
自分で試してみよう
func createOptional(value: Int) -> String {
// 本物のオプショナルではなく、オプショナルのように見えるStringを返す
// 文字列補間を使って括弧の間に数値を挿入する
return "Optional()"
}
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Swiftプレイグラウンド