2017-04-07 125 views
2

在下面的代码中,我注意到^字符之前似乎是一个地图数据结构。什么是^用于什么,或者^{用于什么?^{mean是什么意思?

(ns temper.core 
    (:gen-class) 
    (:require [mount.core :as mount])) 

(mount/defstate ^{:on-reload :noop} 
       http-server 
       :start 
       (http/start 
       (-> env 
        (assoc :handler (lazy-run 'temper.handler 'app)) 
        (update :port #(or (-> env :options :port) %)))) 
       :stop 
       (http/stop http-server)) 

回答

3

^字符是用于元数据。请参阅https://clojure.org/reference/reader#macrocharshttps://clojure.org/reference/metadata

^{:on-reload :noop}(with-meta obj {:on-reload :noop})是等同的。

+0

这是Clojure中为数不多的“阅读器宏”之一。你可以在这里找到一个完整的列表:https://clojure.org/reference/reader –

+0

我试图在clojuredocs上找到这些字符组合,但它们没有出现在搜索框中。我现在将在GitHub上提出它。 – RFVenter