我在浏览器中运行了一个 Clojurescript 程序。
它导入了许多库,然后我想让用户输入一些调用这些库的小型 clojurescript “胶水代码”。
我可以看到(来自https://cljs.github.io/api/cljs.js/eval)你用四个参数调用 eval ,第一个是环境的状态,它是一个原子。但是我真的可以将我当前的环境以及我从其他地方需要的所有功能变成一个合适的 eval 参数吗?
更新 :
我想也许我可以使用第三个参数 opts-map 的 :ns 选项为 eval 设置命名空间。我将它设置为我的应用程序的命名空间:
:ns "fig-pat.core"
但没有区别。
查看控制台,它肯定是在尝试进行评估,但它抱怨在评估代码中引用的名称无法识别:
WARNING: Use of undeclared Var /square
例如。(正方形是我需要的功能。它在应用程序本身中可见,即 fig-pat.core 命名空间)
然后我得到:
SyntaxError: expected expression, got '.'[Learn More]
我假设这是 eval-ed 表达式作为一个整体的失败。
更新 2:
我猜这个问题实际上可能与:如何从 clojurescript 程序中获取我所在的 Clojurescript 命名空间?
(println *ns*)
只是打印零。所以也许 Clojurescript 看不到它自己的命名空间。
因此 :ns 中的 eval 不起作用?