2014-06-21 3 views
4

я наткнулся на официальном примере Om под «примеры/Mixins», есть определение, как это:Что означает это «#» в контексте Clojure?

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

Что «#js» означает? Я не мог найти документацию Clojure по символу «#», когда он используется таким образом.

ответ

6

От Om tutorial:

#js {...} и #js [...] является то, что называют читателя буквального. ClojureScript поддерживает литералы данных для JavaScript через #js. #js {...} для объектов JavaScript:

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

Спасибо за указатель, Диего я действительно проглядели учебник –

6

Прежде всего Om является Clojurescript библиотека. Существуют некоторые различия между Clojure и Clojurescript, они документированы here.

#js называется помеченным буквальным, что исходит от edn, в основном помеченного буквального говорит читатель, как анализировать данные, в случае #js он говорит читателю разобрать данные в виде Javascript объекта. Посмотрите here для получения дополнительной информации.

+0

Спасибо за статью, Родриго.. –

0

Все макросы рассылки для чтения начинаются с #. Когда вы видите это, это означает, что в момент чтения кода происходит что-то особенное, и это ничем не отличается от #js, чем с # (или #_ или даже # для наборов. В этом случае он сообщает читателю, что следующее является JavaScript буквальным

Подробнее здесь:.. http://clojure.org/reader#The%20Reader--Macro%20characters

Смежные вопросы