так ничего, что в хешах кложурных порядок не определен?
Ну вообще, конечно, это шутка была, но по факту:
(reduce (fn [m i]
(let [m* (assoc m i i)]
(prn (type m*) m*)
m*))
{} (range 12))
clojure.lang.PersistentArrayMap {0 0}
clojure.lang.PersistentArrayMap {0 0, 1 1}
clojure.lang.PersistentArrayMap {0 0, 1 1, 2 2}
clojure.lang.PersistentArrayMap {0 0, 1 1, 2 2, 3 3}
clojure.lang.PersistentArrayMap {0 0, 1 1, 2 2, 3 3, 4 4}
clojure.lang.PersistentArrayMap {0 0, 1 1, 2 2, 3 3, 4 4, 5 5}
clojure.lang.PersistentArrayMap {0 0, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6}
clojure.lang.PersistentArrayMap {0 0, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7}
clojure.lang.PersistentArrayMap {0 0, 1 1, 2 2, 3 3, 4 4, 5 5, 6 6, 7 7, 8 8}
clojure.lang.PersistentHashMap {0 0, 7 7, 1 1, 4 4, 6 6, 3 3, 2 2, 9 9, 5 5, 8 8}
clojure.lang.PersistentHashMap {0 0, 7 7, 1 1, 4 4, 6 6, 3 3, 2 2, 9 9, 5 5, 10 10, 8 8}
clojure.lang.PersistentHashMap {0 0, 7 7, 1 1, 4 4, 6 6, 3 3, 2 2, 11 11, 9 9, 5 5, 10 10, 8 8}
=> {0 0, 7 7, 1 1, 4 4, 6 6, 3 3, 2 2, 11 11, 9 9, 5 5, 10 10, 8 8}
@nicola появился route-map 0.0.5 на clojars, только вообще непонятно, как определить, что там внутри 🙂
думаю опечатка
@ilevd Типа, массив преобразуется в хэш-таблицу только после того, как туда набьётся 17 элементов? Вроде я что-то слышал, что Рич посчитал, что именно на 17 sweet spot для каких-то workloads.
подскажите, можно внутри макроса использовать переменную не с тела этого макроса? Например, есть следующий псевдо-макрос:
(defmacro css.
[class]
`(str component-name "_" ~class))
он ничего не знает о переменной component-name
. При его использовании, он может увидеть эту переменную в своей области видимости, например:
(def component-name "button")
(css."wrapper")
результатом будет, соответсвенно, button_wrapper
такое можно сделать?@dottedmag там получается 18 элементов в массиве (9 пар ключ-значений) и если 10-ый раз assoc делать, то преобразуется в hash-map. С виду похоже на опечатку. Нехорошо, если из-за этого какая-то оптимизация не срабатывает.
Хотя можно просто создать hashmap и arraymap с 9 элементами и потестить что быстрее)
@y.khmelevskii Можно, но тебя будут беспощадно материть те, кто потом будет разбираться в этом коде.
@y.khmelevskii Лучше уж тогда сделать (with-component-name "button" ...)
, который будет устанавливать контекст для всяких css.
@dottedmag за что материть? вроде безобидный синтаксический сахар. Да, (with-component-name "button" ...)
нравится больше. Остался вопрос как синтаксически это сделать 🙂
Кстати, а зачем для этого макро?
with-component-name
может устанавливать динамическую переменную, и ему нужно быть макросом. А css.
может читать её, будучи обычной функцией.
@y.khmelevskii (binding [*component-name* "button"] (css. "wrapper")...)
И css.
будет читать *component-name*
да макрос не обязателен. спасибо, буду пробовать
ха, with-component-name
должен оборачивать, весь код. так еще хуже, лучше уж без этого в принципе