【问题标题】:How is the defprotocol macro defined in clojurescript?clojurescript 中的 defprotocol 宏是如何定义的?
【发布时间】:2016-08-02 11:48:34
【问题描述】:

我试图找出定义 defprotocol 宏的源代码在哪里。

cljs.core 来源:

https://github.com/clojure/clojurescript/blob/master/src/cljs/cljs/core.cljs

defprotocol 宏在第 155 行突然弹出(以及 -invoke 函数)。我们在哪里可以找到它的实现位置?

【问题讨论】:

    标签: clojure clojurescript


    【解决方案1】:

    ClojureScript 中的所有宏都必须实现为 Clojure。

    defprotocol 在该文件的第 796 行实现:

    https://github.com/clojure/clojurescript/blob/master/src/clj/cljs/core.clj#L796

    请注意,此文件是 Clojure 文件,而不是 ClojureScript 文件。

    【讨论】:

    • 谢谢!顺便说一句...你知道 js* 宏是如何工作的吗?我在 cljs.core 代码中看到了它,但没有定义
    • js* 不是宏,它是一种特殊形式。它用于允许 ClojureScript 在需要时使用 Javascript。在this video Chris Houser 中谈了一点。
    • 实现js*的代码在这个文件里:analyzer.clj
    • 你好,我写了一篇文章来解释clojurescript如何在javascript中编译defprotocol,这可能对你有帮助:) blog.klipse.tech//clojurescript/2016/04/09/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 2015-11-16
    相关资源
    最近更新 更多