Пример кода:Что я вижу в приложении «Кольцо»?
(def app
(-> #'handler
(ring.middleware.stacktrace/wrap-stacktrace)
(wrap-spy)))
Я не Clojure эксперт и это #'
озадачивает меня - что это такое?
Пример кода:Что я вижу в приложении «Кольцо»?
(def app
(-> #'handler
(ring.middleware.stacktrace/wrap-stacktrace)
(wrap-spy)))
Я не Clojure эксперт и это #'
озадачивает меня - что это такое?
Это reader macro called var-quote. #'x
- это то же самое, что и (var x)
.
Что она делает это дать вам ссылку на переменнуюназывается x
, а не значение, на которую ссылается x
. В этом случае вы говорите, чтобы позвонить: «функция вызова находится в handler
», а не «здесь функция вызова». Это означает, что вы можете обновить (переопределить в repl) определение handler
, и кольцо найдет его, даже если вы не обновите остальную часть приложения.
Чтобы найти такие вещи, вы можете использовать [symbolhound] (http://symbolhound.com/?q=%23%27) –
Это [макрос читателя] (http://clojure.org/reader# % 20Reader - Макро% 20 символов) для [var] (http://clojure.org/vars) -quote. –
Это действительно близко к упомянутым дубликатам. Единственное различие заключается в том, что он спрашивает о кольце, в частности, что, вероятно, связано с тем, что многие люди впервые сталкиваются с «#». Ключевое слово (и тег) «кольца» может сделать это достойным внимания. – overthink