var mint=0;
var mtxt = TextBox {
onKeyPressed:function(ke:KeyEvent):Void{
if ( ke.code == KeyCode.VK_ENTER )
{
mint = Integer.parseInt(mtxt.text);
}
}
}
var mtxt2:TextBox = TextBox {
onKeyPressed:function(ke:KeyEvent){
if ( ke.code == KeyCode.VK_ENTER )
{
mint = Integer.parseInt(mtxt2.text);
}
}
}
下のmtxt2はエラーにならないが、上のmtxtは、var mtxtの行が黄色の!アイコンで、"Need explicit type for mtxt because of cycle in initialization."というエラーに、mint = の行が赤い!アイコンで"This is the cyclic reference to mtxt that prevents type inference."というエラーになる。
Need explicit typeというのは良いとして、何故明示する必要があるのか分からない。かなり悩んでしまったが、こんなことで悩むなら使い分けない方が楽だが(全部明示)、ちゃんとした理由が知りたいようでどうでも良いようで。
それより赤!アイコンにばかり目がいってしまい、黄色!マークを見落としていて、以前書いたコードと見比べて、型を明示すればエラーにならないことにようやく気づいた。黄色アイコンを見逃すなという教訓。
ちなみにonKeyPressedは、ENTERでいいなら、actionの方が簡単。
0 件のコメント:
コメントを投稿