Size: a a a

Clojure — русскоговорящее сообщество

2021 October 13

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
ну вот:

(if
 (clojure.core/seq? map__60601)
 (clojure.lang.PersistentHashMap/create (clojure.core/seq map__60601))
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
ну это же вроде по определению :keys так должно получаться
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
если я передам хешмапу, провека (seq? ...) даст ложь
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
я если честно ожидал простых гетов:

[foo (get data :foo) 
bar (get data :bar))
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
последовательность, не коллекция
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
ну они так как бы и есть, только еще могут с последовательностями сработать
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
да, так точнее
источник

a

alex in Clojure — русскоговорящее сообщество
а как последовательность должна выглядеть?
типа (:foo "abc' :bar 'cba') ?
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
типа вот мы можем написать так

user=> (map identity {:a 1 :b 2})
([:a 1] [:b 2])
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
а тут наоборот для :keys
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
В общем, на больших деструктурзациях (по пять уровней и больше) наверное стоит использовать простой гет
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Да.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Потому что приведение к seq и потом обратно к hashmap дает оверхед
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
а где там приведение к seq ?
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
ну вот же

(clojure.lang.PersistentHashMap/create (clojure.core/seq map__60601)
источник

MP

Maxim Penzin in Clojure — русскоговорящее сообщество
это еcли  (if seq?
источник

a

alex in Clojure — русскоговорящее сообщество
оно же уже seq
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
а, блин, я перепутал
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
приведение к мапе только если это был seq, а иначе исходная мапа
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
значит, из лишнего только проверка на seq
источник