Clojure — 英镑符号的含义?`

Clojure — Meaning of pound symbol?`

在 Om Next 快速入门中,他们使用 #js#uuid。这里的英镑符号是什么意思?

Link: https://github.com/omcljs/om/wiki/Quick-Start-(om.next)#components-with-queries--mutations

片段:

#js:

(defui Counter
  static om/IQuery
  (query [this]
    [:count])
  Object
  (render [this]
    (let [{:keys [count]} (om/props this)]
      (dom/div nil
        (dom/span nil (str "Count: " count))
        (dom/button
          #js {:onClick
               (fn [e] (om/transact! this '[(increment)]))}
          "Click me!")))))

#uuid:

(om/from-history reconciler
  #uuid "9e7160a0-89cc-4482-aba1-7b894a1c54b4")

常见于 EDN 和 ClojureScript 中,# 的这种用法称为 标记文字。看这个例子,

user=> (java.util.Date.)
#inst "2014-05-19T19:12:37.925-00:00"

当我们创建一个新日期时,它表示为标记文字,或者在本例中为标记字符串。我们可以使用 Clojures read-string 来读回这个(或者直接使用它)

user=> (type #inst "2014-05-19T19:12:37.925-00:00")
java.util.Date
(read-string "#inst \"2014-05-19T19:12:37.925-00:00\"")
#inst "2014-05-19T19:12:37.925-00:00"
user=> (type (read-string "#inst \"2014-05-19T19:12:37.925-00:00\""))
java.util.Date

标记文字告诉 reader 如何解析文字值。其他常见用途包括用于生成 UUID 的 #uuid,在 ClojureScript 世界中,标记文字的一个极其常见的用途是 #js,它可用于将 ClojureScript 数据结构直接转换为 JavaScript 结构。

礼貌:The Weird and Wonderful Characters of Clojure