Javaコンパイラは、com.sun.tools.javac.tree.*
(LetExpr
を探してください)のlet
式をサポートしているようです。 JCTreeでJavaコンパイラで「let式」(LetExpr)を使用する目的は?
一つのコメントはさらにいくつかの構文はもちろん、言語の文法に受け入れられず、それ以前のコンパイラのフェーズに拒否
(let int x = 3; in x+2)
に言及しています。
これまで私が見たことがないこの構造の起源については疑問に思っています。
内部でjavac
で使用されていますか他のツールで合成されていますか?それは光を見たことのない言語機能からJavaの非常に初期の時代からの単なるアーティファクトでしょうか?
今日は何ができるのですか?
一般に、なぜそれが存在するのですか?
そのページは、オートボクシングのために*存在するとは言わず、オートボクシングでは*使用されています。このページはlet式ではなく、autoboxingのバグに関するものなので、オートボクシングがlet式の唯一の使用であることは驚くべきことではありません。 (私はあなたが間違っていると言っているのではありません - 私は本当に知りませんが、あなたが知っていればもっと説得力のある/説得力のあるソースを追加すると役に立つと思います) – ruakh
'let int foo_helper = foo_helper ++; foo.intValue()は 'でも意味ですか? – ArtB
@ArtB ml構文に似ています。式ではvar = valueとします。したがって、式では、varのすべてのインスタンスが評価されます。 – Matthew