我的问题需要将自定义逻辑函数应用于结构。这些函数以字符串形式存储在数据库中。我的数据是这样的:以公共结构作为参数的ClojureScript中的eval-str
(def fruits {:apple {:color "red" :ripe? true}
:strawberry {:color "red" :ripe? false}})
而且我有这个COND检查:
"(some (fn [fruit] (-> fruit val :ripe? false?)) fruits)"
可惜的是,我不能得到这个权利,即使我尝试过各种方法:
1)
(cljs/eval-str (cljs/empty-state)
"(some (fn [fruit] (-> fruit val :ripe? false?)) my.main/fruits)"
""
{:eval cljs/js-eval}
identity)
此作品尚未出现错误:
WARNING: No such namespace: my.main, could not locate my/main.cljs, my/main.cljc, or Closure namespace "" at line 1
WARNING: Use of undeclared Var my.main/fruits at line 1
此外,这种方法显然不适用于高级编译。
2)我试图利用的办法,用Clojure工作:
((eval
(read-string
"(fn [fruits]
(some (fn [fruit] (-> fruit val :ripe? false?)) fruits))"))
fruits)
我不明白为什么这不会在高级编译工作。不幸的是,它每次只返回nil
。
难道只是我没有想出一个解决方案或CLJS只是没有能力做到这一点呢?
所以它适用于:简单和:空白?也许在这个方向阅读将有助于:http://www.lispcast.com/clojurescript-externs –
排序...首先它说'水果'没有宣布,但然后它计算结果好吧。我不明白为什么。 –
您可能需要研究extern和出口,并考虑加入cljs懈怠组并在那里询问。 –