"まだ"の力 [Swift]基礎辞書

学んだことを書いていきます。質問やエラーなどございましたらお気軽にコメントお願いします。

初心者、基礎を積み上げる「オプショナル値!?」

!と?どういうことなの?

値を入れない変数や、関数を使いたい時は必ず出てくると思います。他の言語ではEOFや0などで終わりを示していたが、Swiftではnilという、値がないという意味の特別な値が用意されているためとても便利になりました。
例えばString型のとき、!空白の値(nil)が入る可能性がある場合はString?という型になります。これをオプショナルString型と呼びます。

var x:String = "文字"
var y:String? = "文字"
var z:String?
x = nil
y = nil
print("\(z)")    //nilと出力

//変数xなど初期値を設定しない場合はnilが入ります。



「ここに値入るのかな...?←」ってときにオプショナル型(?)になるんですね。
これはStringのみならず他の型に対しても同様です。










!!

さっきまで?を扱ってきましたがInt?型の場合Swiftは型に厳しい言語ですのでInt型との計算はできなくなってしまいます。例えば

var testscore:Int? = 59
score + 1    //エラー

これではテストの点数59点に1点追加できなくなってしまいます。59点じゃ赤点です。
じゃあどうすればいいのか。ここで!の登場です。
この私の記事でも3回ずつ登場する「!」びっくりマーク、何かと言うと「アンラップ」と言います。この!の役目はnilが入ってるかもしれないInt?型から安心してください。入ってますよ!と明示(保証)するためのものです。そしてnilが入っている可能性がなくなったのでInt型扱いとなります。

var score:Int? = 59
var scoreadd:Int? = 1
score! + 1      //60と出力
score + 1       //エラー

ここまでのまとめ3つ

  1. nilが入る可能性がある場合はオプショナル(?)型
  2. !はアンラップ、安心してください。入ってますよ!
  3. Swiftは型に厳しいのでオプショナル値を使うときはアンラップすること。