Clojure — 井号符号的含义是什么?

5
在Om Next Quick Start中,他们使用#js#uuid。这里的#符号是什么意思?
链接: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")
1个回答

6

在EDN和ClojureScript中常见的是使用#来表示标记文本。看这个例子:

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

当我们创建一个新的日期时,它被表示为一个标记文字,或者在这种情况下是一个标记字符串。我们可以使用Clojure的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

标记文字告诉读者如何解析文字值。另一个常见用法是用 #uuid 生成 UUID,在ClojureScript世界中,标记文字的极其常见用法是 #js,可以直接将ClojureScript数据结构转换为JavaScript结构。

引用:Clojure的奇怪和美妙字符


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接