変数の重複宣言
確かに、同名の変数を例えば以下のように宣言することはできない (以下の例は C# で書いたが、他の言語にも当てはまる)。
void Method() {
for (int x = 0; x < 10; x++)
DoSomething(x);
int x;
}
でも、やっぱりこれ、言語仕様としておかしいよな。
C 言語は関数その他ブロックの最初で全ての変数を宣言しなければならないためこの問題は起こらない。Java や C# などの C を発展させた言語は、ブロックの途中でも宣言できるようになったが、途中で宣言しても最初で宣言したかのように重複をチェックするものだから、混乱を招いている。
宣言の重複のチェックは、変数の参照可能範囲のチェックと同じように行われるべきものだ。
あ、Java だとこれは OK なのか。できないものだと思い込んでた。えらいぞ Java。
| 固定リンク
コメント