2013-05-06 62 views

回答

2

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

defprotocol在这个文件的796行实现:

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

请注意,这个文件是一个Clojure的文件,而不是ClojureScript文件。

+0

谢谢!顺便说一句...你知道js *宏是如何工作的吗?我在cljs.core代码中看到它,但没有定义 – zcaudate 2013-05-06 20:49:53

+0

js *不是一个宏,它是一种特殊的形式。它用于在需要时允许ClojureScript下降到Javascript。在[本视频]中(http://www.youtube.com/watch?v=5edtbpVOOBI&feature=player_detailpage#t=1681s)Chris Houser谈了一点。 – 2013-05-06 21:19:06

+1

实现js *的代码在这个文件中:[analyzer.clj](https://github.com/clojure/clojurescript/blob/master/src/clj/cljs/analyzer.clj#L826) – 2013-05-07 00:52:44