gpt4 book ai didi

clojure - Resolve 函数会在 ClojureScript 中引发错误,但不会在 Clojure 中引发错误

转载 作者:行者123 更新时间:2023-12-04 01:57:23 26 4
gpt4 key购买 nike

以下程序在 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。

可以通过各种技巧(例如将 aget 与命名空间对象一起使用)来调用其名称是动态构造的函数,但是除非导出所有相关符号,否则这些技巧肯定会因高级编译而中断。此外,即使使用更宽松的编译设置,目前也没有人获得官方支持。

关于clojure - Resolve 函数会在 ClojureScript 中引发错误,但不会在 Clojure 中引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12020576/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com