5. Optional型の使い方は特殊
Optional型は、非Optional型と同じようには扱えない
var a: Int = 1
println(a + 2) // -> 3
var b: Int? = 1
println(b + 2)
// コンパイラエラーが発生する:
//Value of optional type 'Int?' not unwrapped; did you mean to use '!' or '?'?
Int?はOptionalの糖衣構文になっていて、既存の型の最後に?をつけることで簡単になんでも
Optional型にできるがこのままではOptional型なので普通のInt型のように扱うことが出来ない
6. Optional型を扱うためには?
var n : Int? = 1
n + 1 //この記述はエラー
// !をつけ元の型に戻せば、変数をその型で扱える
var nn : Int = n! + 1
println(nn);
既存の型の最後に ? をつけることでOptional型にwrapされる
! をつけることでunwrapする
Optionalは宣言された型「か」nilを保持している、いわば不確定なかたちなので実際に使用す
るときはunwrapしてやる。
上記の例なら「Int」型として使うことをはっきりさせる(イメージ)
Optionalは奥が深そうなので継続的に勉強していき共有していきます・・・。