次のメソッドは、内側のブロックが外側のブロックと同じ名前の変数を宣言しているため、機能しません。どうやら変数は宣言されているブロックではなく、宣言されているメソッドまたはクラスに属しているようです。ちょっとだけ影:
void methodName() {
int i = 7;
for (int j = 0; j < 10; j++) {
int i = j * 2;
}
}
私がこれまでに使用したほぼすべてのブロック スコープ言語は、これをサポートしていました。これには、学校でインタープリターとコンパイラーを作成した簡単な小さな言語も含まれます。Perl はこれを行うことができ、Scheme や C でさえ可能です。PL/SQL でさえこれをサポートしています!
この Java の設計上の決定の根拠は何ですか?
編集:誰かが指摘したように、Javaにはブロックスコープがあります。私が尋ねている概念の名前は何ですか? それらの言語設計クラスからもっと思い出せたらいいのにと思います。:)