Читая исходный код re-frame, я наткнулся на эта строка:
(def empty-queue #queue [])
Что такое #queue
? Какой эффект это имеет?
Читая исходный код re-frame, я наткнулся на эта строка:
(def empty-queue #queue [])
Что такое #queue
? Какой эффект это имеет?
#queue []
— это помеченный литерал: #queue
использует член queue
*data-readers*
для преобразования или интерпретации []
.
Конкретное определение этого средства чтения в src /main/clojure/cljs/tagged_literals.cljs в репозитории ClojureScript, на который ссылается *cljs-data-readers*
определение ниже; он преобразует []
из вектора в cljs.core.PersistentQueue.
См. также документацию по адресу https://cljs.github.io/api/syntax/queue-literal
Постоянные структуры очередей как в Clojure, так и в ClojureScript существуют, чтобы обеспечить эффективную отправку на один конец и извлечение с другого — в отличие от списков и векторов, которые эффективны только при отправке и извлечении с одной и той же стороны.
cljs.core.PersistentQueue.EMPTY
напрямую?
- person kamituel; 20.04.2017
#?(:clj ... :cljs ...)
, чтобы получить желаемый тип очереди как в .clj, так и в .cljs. Однако вариант использования EDN более интересен.
- person kamituel; 21.04.2017