@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
должен оборачивать, весь код. так еще хуже, лучше уж без этого в принципе