byteArrayToHex byteArrayToString hexToByteArray ...
2019 年 11 月 18 日
ClojureScript 團隊
set/union
和 into
的行為現在與 Clojure 對齊。
subvec
參數檢查現在與 Clojure 對齊。
在陣列上使用 apply
vector
現在會正確複製陣列。
編譯器現在會為 Google Closure 命名空間產生分析中繼資料。這表示對於這些命名空間:
REPL 功能,例如 doc
、dir
、apropos
等等,現在可以運作。
可以使用參數清單,因此可以進行參數個數檢查。
可以使用傳回類型,從而增強型別推斷。
將會產生對私有變數使用的警告。
為了說明,讓我們 (require '[goog.crypt :as crypt])
並在 REPL 中探索它
現在,(dir crypt)
會列出該命名空間中的函式
byteArrayToHex byteArrayToString hexToByteArray ...
可以使用文件字串;(doc crypt/hexToByteArray)
會產生
------------------------- goog.crypt/hexToByteArray ([hexString]) /** * Converts a hex string into an integer array. ...
可以使用參數個數資訊。將不正確的參數個數傳遞給其中一個函式會產生參數個數警告。例如,(crypt/hexToByteArray "abc" 123)
會產生
WARNING: Wrong number of args (2) passed to goog.crypt/hexToByteArray at line 1 <cljs repl>
此版本中對 ClojureScript 的型別推斷進行了多項改進。
這可以透過範例輕鬆解釋
(defrecord Complex [re im])
(let [x (->Complex 1.1 2.7)]
(:re x))
為最後一個運算式產生的程式碼將是 x.re
。這可以快 66% 到 450% 不等。
count
特化如果您將 count
應用於靜態推斷為字串或陣列的值,則產生的 JavaScript 將會直接存取 length
欄位,而不是在執行時呼叫 count
。
例如,(count "abc")
將會導致發出 "abc".length
。根據上下文,這可能會快好幾個數量級。
simple-
/ qualified-
謂詞引導推斷如果針對區域變數滿足 simple-keyword?
或 qualified-keyword?
,則會推斷該區域變數為關鍵字。同樣地,simple-symbol?
或 qualified-symbol?
會導致將區域變數視為符號。
這基本上擴展了現有的針對 keyword?
和 symbol?
的謂詞引導推斷,以包含這些額外的核心謂詞。
如需 ClojureScript 1.10.597 中的完整更新清單,請參閱 變更。