雨に唄えばおじさんと揚げ玉ビーチ
╰( ´◔ ω ◔ `)╯ またまた Swiff の話だ
╰( ´◔ ω ◔ `)╯ 多分な
換気扇の空、オリーブオイルの海、揚げ玉の海岸。
雨に唄えばおじさんは自分が厄介な場所に来てしまったことを悟った。
ということで、以下のコードはコンパイルエラーになる(はず):
let hoge : Nil = nil; // Nil のみの型を持つ変数の宣言はコンパイルエラーになる。 let piyo : int? = nil; // Nil 許容型の変数に nil を初期値として設定するとコンパイルエラーになる。 let fuga : int = nil; // 整数型の変数に nil を初期値として設定するとコンパイルエラーになる。
hoge
の方は、やっても意味がない宣言だと思う。nil
しか設定できないし……。
piyo
の方は、null 排斥運動におけるコンパイルエラー。
多くの場合、最初に null
が入っているから NullReferenceException
が送出されるので、
null
を初期値として設定しないようにすれば多くの場合 NullReferencException
を退けられるだろうという考えらしい。
Wikipedia では「安全性のために」としか書いてないけど。
fuga
の場合はそりゃそーだよなって感じ。int
型の変数に nil
は設定できない。
でも、こっちはどうだろう:
let hage = getHage();
getHage()
がこうなっていると:
def getHage() : int? { if true { return nil; } 42; }
hage
には nil
が設定される。
こういう場合は、「nil
しか返ってこなさそうですよ」って Warning を表示した方が良いんだろうか?
っていうか、こういう場合、Visual Studio*1 では到達不可能なコードなんちゃらあるって言われるよな………。
こういう場合は、やっぱりなんともならないよなぁ:
let hyoga = int.parse( "X" );
まあ、関数の戻り値の nil
はいいことにしようっていうか、リテラルとしての nil
を設定するのがダメってことなんだもんね。