Size: a a a

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

2021 June 24

MB

Mikhail Beliansky in Clojure — русскоговорящее сообщество
Соединение. Как в примере — урл и токен, которые нужны для всех запросов
источник

A

Andrey in Clojure — русскоговорящее сообщество
тогда лучше мапкой
источник

A

Andrey in Clojure — русскоговорящее сообщество
можно еще так:

(defn get [& {:keys [url token endpoint]}]

ну это если душа прямо просит кейворд аргументов)

(get :url "a" :endpoint "b" :token "c")
источник

A

Andrey in Clojure — русскоговорящее сообщество
но не рекомендую
источник

MB

Mikhail Beliansky in Clojure — русскоговорящее сообщество
А почему?
источник

A

Andrey in Clojure — русскоговорящее сообщество
потому что мапка делает то же самое, но композируется гораздо легче
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
В 1.11 в последнем случае можно и мапу передавать
источник

A

Andrey in Clojure — русскоговорящее сообщество
в старых лиспах кейворд аргументы решали проблему опциональных аргументов с нефиксированным порядком так как с мапками у них там все было плохо. В кложе хорошо с мапками и этот стиль не особо нужен, особенно с мультиарностью
источник

A

Andrey in Clojure — русскоговорящее сообщество
Не знал. Но clojerl ругается кстати
источник

MB

Mikhail Beliansky in Clojure — русскоговорящее сообщество
Я вот тоже про это читал
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
В принципе сказали, почему, но легче один раз попробовать )
источник

ИФ

Иван Федоров... in Clojure — русскоговорящее сообщество
Если уверен, то первое, если ещё идёт эволюция — то второе. Популярная схема так же: [main-arg opts-map]  

Я бы во второе еще слал ключи как :api1/token
Так когда :api1 набираешь — уже автокомплит срабатывает. И дискавери кода другими участниками лучше кмк
источник

MB

Mikhail Beliansky in Clojure — русскоговорящее сообщество
Спасибо) примерно понял
источник
2021 June 25

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Ещё соображение:
Если функа ест 7 и более (для некоторых этот порог ниже) параметров, то используют мапу, чтобы параметры были «именованными» в месте вызова.
источник

DF

Damir Farazetdinov in Clojure — русскоговорящее сообщество
Ну и конечно кто-то может возразить: если функа ест 7 параметров, то её надо декомпозировать. Но это другая тема.
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Мне кажется, общее правило такое: обязальные параметры идут по отдельности, а все опции мапой
источник

IG

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

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Как вариант, можно иметь некий джеренирик, который все принимает мапой, и несколько шорткатов, которые явно запрашивают основные
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Хороший пример -- clj-http. В нем универсальная функция request, которая принимает мапу, и get/post/put/etc, которые принимают урл и словарь
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
или log/info, log/error, log/etc сводятся к log/log*
источник