阅读 re-frame 的源代码,我偶然发现了这一行:
(def empty-queue #queue [])
是什么#queue
?它有什么作用?
#queue []
是一个标记文字:#queue
使用queue
成员*data-readers*
来转换或解释[]
。
这个阅读器的具体定义在 ClojureScript 仓库中的src/main/clojure/cljs/tagged_literals.cljs中,参考*cljs-data-readers*
下面的定义;它[]
从向量转换为cljs.core.PersistentQueue。
另请参阅https://cljs.github.io/api/syntax/queue-literal上的文档
Clojure 和 ClojureScript 中的持久队列结构的存在允许有效地推送到一端并从另一端弹出 - 与列表和向量相反,列表和向量仅在从同一侧推送和弹出时有效。