[英]Resolve function throws an error in ClojureScript but not Clojure
以下程序按照我在Clojure中的預期工作,但在ClojureScript中拋出錯誤。 我想知道這是一個錯誤還是ClojureScript中沒有這個功能,或者我需要重新考慮我試圖這樣做的方式。 非常感謝您的幫助。
; Clojure...
(defn foo [x] x)
(defn foobee [x] (str (foo x) "bee"))
(println
((resolve (symbol (str "foo" "bee"))) "bizzee"))
;=> bizzeebee
; ClojureScript...
(defn foo [x] x)
(defn foobee [x] (str (foo x) "bee"))
(.log js/console
((resolve (symbol (str "foo" "bee"))) "bizzee"))
;=> Exception in thread "main" java.lang.IllegalArgumentException: Don't know how to create ISeq from: clojure.lang.Symbol
resolve
不ClojureScript存在。 事實上,ClojureScript沒有Vars。
調用名稱是動態構造的函數是可以通過各種hack(例如使用具有命名空間對象的aget
)來實現的,但是除非導出所有相關符號,否則這些函數會被高級編譯破壞。 此外,即使使用更寬松的編譯設置,目前也沒有人享受官方支持。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.