0
int[] arr = {1, 2, 3};
arr = {1, 2, 3} //Error
arr = new int[] {1, 2, 3}; //No Error
私の質問はなぜそうですか? 2行目と3行目の違いはどういう意味ですか?配列リテラルは宣言にのみ使用できますか?
int[] arr = {1, 2, 3};
arr = {1, 2, 3} //Error
arr = new int[] {1, 2, 3}; //No Error
私の質問はなぜそうですか? 2行目と3行目の違いはどういう意味ですか?配列リテラルは宣言にのみ使用できますか?
これは、JavaやC#のバディの仕組みで、実際にはこれに文句を言うことはできません。プログラミングのセマンティクスに着目すると、2行目にはあまり曖昧さがあり、本当に高度なものについて考えるとパースツリーのように、2行目のような文のために構築する必要があります。私たちは大きな問題に遭遇しています。あなたは、Java言語が指定されているだけの方法ですlink to parse trees
を好きなら
は、パーサについてのいくつかのことを読んでください。言語が間違った構文をサポートすることができる、またはサポートする必要があると思われるかどうかに関わらず、単純にはそうではありません。 –
Java言語の父親が考えたすべてが100%の意味を成し遂げたわけではありません。私はこれらのルールが解析を容易にする理由を考えることさえできません。 – GhostCat
これはjavaかC#ですか?両方の言語で – Rob