Java編譯器似乎支持表達式com.sun.tools.javac.tree.*
(查找LetExpr
)。在JCTreeJava編譯器中的「let expression」(LetExpr)的用途是什麼?
一個評論甚至提到了一些語法
(let int x = 3; in x+2)
這當然不是由語言的語法接受和早期編譯器相拒絕。
我想知道這個構造的起源,這是我以前從未見過的。
由javac
內部使用還是由其他工具合成?它可能僅僅是從Java早期的語言特徵中看不到光的一個神器?
今天有什麼有用的東西可以用嗎?
一般來說,它爲什麼存在?
該頁面並沒有說它存在*用於自動裝箱,只是它在自動裝箱中被使用*。由於頁面是關於自動裝箱中的一個錯誤,而不是關於let-expressions,因此自動裝箱是它提及的let-expressions的唯一用途並不奇怪。 (我並不是說你錯了 - 我真的不知道 - 但是我認爲如果你知道一個,增加一個更相關的/有說服力的/明確的來源會有幫助。) – ruakh
'let int foo_helper = foo.intValue()在foo_helper ++;'偶是什麼意思? – ArtB
@ArtB它與ml語法類似。讓var =表達式中的值。因此,在表達式中,var的所有實例都會評估爲值。 – Matthew