“#queue”在(def empty-queue #queue [])中是什么意思?
What does "#queue" mean in (def empty-queue #queue [])?
阅读 re-frame 的源代码,我偶然发现 this line:
(def empty-queue #queue [])
什么是#queue
?有什么作用?
#queue []
是一个 tagged literal:#queue
使用 *data-readers*
的 queue
成员来转换或解释 []
.
这个reader的具体定义在src/main/clojure/cljs/tagged_literals.cljs in the ClojureScript repository, referenced from the *cljs-data-readers*
definition below; it transforms []
from a vector into a cljs.core.PersistentQueue.
另请参阅 https://cljs.github.io/api/syntax/queue-literal
上的文档
Clojure 和 ClojureScript 中的持久队列结构允许高效地推送到一端并从另一端弹出——这与列表和向量相反,列表和向量仅在从同一侧推送和弹出时才有效。
阅读 re-frame 的源代码,我偶然发现 this line:
(def empty-queue #queue [])
什么是#queue
?有什么作用?
#queue []
是一个 tagged literal:#queue
使用 *data-readers*
的 queue
成员来转换或解释 []
.
这个reader的具体定义在src/main/clojure/cljs/tagged_literals.cljs in the ClojureScript repository, referenced from the *cljs-data-readers*
definition below; it transforms []
from a vector into a cljs.core.PersistentQueue.
另请参阅 https://cljs.github.io/api/syntax/queue-literal
上的文档Clojure 和 ClojureScript 中的持久队列结构允许高效地推送到一端并从另一端弹出——这与列表和向量相反,列表和向量仅在从同一侧推送和弹出时才有效。