这是什么"#"在这个Clojure语境中意味着什么?

时间:2014-06-21 23:00:15

标签: clojure clojurescript reader om

我偶然发现了"例如/ mixins"下的官方Om示例,其定义如下:

(def MyComponent (let [obj (om/specify-state-methods! (clj->js om/pure-methods))]
    (aset obj "mixins" #js [TestMixin])
    (js/React.createClass obj)))

"#js"意思?我无法在符号上找到任何Clojure文档,#34;#"当它以这种方式使用时。

3 个答案:

答案 0 :(得分:6)

来自Om tutorial

  

#js {...}#js [...]是所谓的读者文字。 ClojureScript通过#js支持JavaScript的数据文字。 #js {...}适用于JavaScript对象:

#js {:foo "bar"}  ;; is equivalent to
#js {"foo" "bar"}

答案 1 :(得分:6)

首先OmClojurescript库。 Clojure和Clojurescript之间存在一些差异,它们记录在案here

#js被称为标记文字,来自edn,基本上标记的文字告诉读者如何解析数据,在#js的情况下,它告诉读者将数据解析为Javascript对象。请查看here以获取更多信息。

答案 2 :(得分:0)

所有调度阅读器宏都以#开头。当你看到它时,这意味着在读取代码时会发生一些特殊的事情,这与#js没有什么不同,而#(或#_或甚至#{对于集合。在这种情况下它会告诉读者接下来的内容是一个JavaScript文字。

更多信息:http://clojure.org/reader#The%20Reader--Macro%20characters