我想编写一个 clojurescript 函数,它返回一个复杂的项目,例如 ["foo" "bar"] 或 (list "foo" "bar"),并且我希望能够从 javascript 调用此函数并获取返回值。如何做呢?就我而言,我要返回的向量/列表/集合中的项目数量是事先已知的,并且集合应该保持有序。
这是我的 clojurescript 函数。如果能让事情变得更容易的话,我可以在这里做一些不同的事情。只是不知道那会是什么。
(defn myFn [] ["foo" "bar"])
这是编译为 JavaScript 后的样子。这部分完全由前一段代码确定/生成。要在这里进行更改,我必须知道如何调整 clojurescript 中的前一部分。
my.ns.myFn = function myFn() {
return cljs.core.PersistentVector.fromArray(["foo", "bar"], true)
};
当我在 javascript 中执行以下操作时,我看到弹出一个带有 ["foo" "bar"] 的警告框
alert(my.ns.myFn());
但如果我尝试以下操作,警报将显示“未定义”而不是“foo”。
var tmp = my.ns.myFn();
alert(tmp[0]);
我应该做什么不同才能让警报显示“foo”? (嗯。我想我可以编写更多的 clojurescript 来使用该值,看看编译为 javascript 时会如何显示......)
在 Clojure 脚本中:
(ns foo.core)
(defn ^:export bar [x] (array 0 1 2))
在 JavaScript 中:
var result_array = foo.core.bar(x);
... use result_array
作为一个普通的 javascript 数组。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)