簡體   English   中英

Resolve函數在ClojureScript中拋出錯誤但不在Clojure中拋出錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM