4
在Clojure中,某些任務(如實例化PersistentQueue
或使用deftype
實現與clojure.core
函數兼容的自定義數據類型)需要了解clojure.lang
中的類和/或接口。clojure.lang真的只是實現細節?
然而,根據clojure.lang/package.html
:
中唯一的類被認爲是公共API的一部分是
clojure.lang.IFn
。所有其他類應被視爲實施細節。
這些陳述是不正確的還是過時的?如果是這樣,是否有計劃在未來改正它們?如果沒有,是否有更好的方式來執行上述任務,或者根本就不應該在慣用的Clojure代碼中完成任務?
僅僅因爲'clojure.lang'的成員被認爲是實現細節並不意味着你不能引用它們。相反,它只是意味着你不應該期望這樣的代碼是可移植的(例如,你可能需要爲Clojure和ClojureScript分開編寫代碼)。 – DaoWen
@DaoWen clojure.lang被認爲是一個實現細節,不僅僅意味着代碼不是可移植的。從最嚴格的意義上講,只要公共接口保持不變,實現細節可以隨時更改。然而'clojure.lang'並不是那麼好戰。 –