Disり駆動勉強中です!
オプショナルって、未初期化でエラーを出したくないという事のために随分とめんどくさい仕様を盛り込んでコード見づらくしたもんだという所感。
オプショナルって以下だよね
・普通の型にはnil入れられないという仕様にした。
var hoge:String = "ホゲホゲ"
hoge = nil < エラー
・nil入れるために、普通の型改(オプショナル型)を作った。
疑問符(?)つけて定義します。
var hoge:String? = "ホゲホゲ"
hoge = nil <OK
しかし、こんなことしたい場合そんなに多くないきがするがなー
・普通じゃないのでnil以外が入っている時に、普通に処理できない。
var hoge:String? = "ホゲホゲ"
hoge += "ピヨピヨ" <エラー 余計なことするから・・
・nil以外を処理するために、一時的に普通の型に変換する仕組みを作った。オプショナル型に感嘆符(!)をつけて処理します。
var hoge:String? = "ホゲホゲ"
hoge! += "ピヨピヨ" <OK 何びっくりしてるんだか・・
・nilだった場合の初期値ってのも用意されている、疑問符疑問符(??)。
var kosu:Int?
var kakaku:Int
kakaku = 120 * (kosu ?? 1)
ちゃんと初期化して計算式通せよ!・・
なお、オプショナルバインディングは、コード的に楽になる面も多いので、disりません^^
でもあとで判断するか、先に初期化しておくかという違いなだけだとも言える・・
0 件のコメント:
コメントを投稿