【问题标题】:What does this "#" mean in this Clojure context?在这个 Clojure 上下文中,这个“#”是什么意思?
【发布时间】:2014-08-12 08:29:55
【问题描述】:

我在“examples/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 文档。

【问题讨论】:

    标签: clojure clojurescript reader om


    【解决方案1】:

    来自Om tutorial

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

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

    【讨论】:

    • 感谢您的指点,迭戈。我确实忽略了教程。
    【解决方案2】:

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

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

    【讨论】:

    • 感谢罗德里戈的文章。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      • 2015-01-09
      相关资源
      最近更新 更多