Size: a a a

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

2019 December 24

AG

Anatoliy Guliy in Clojure — русскоговорящее сообщество
hashmap есть функция )
источник

AI

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

AI

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

T

The2lb3oz4dr10½grOfHedgehogs in Clojure — русскоговорящее сообщество
Andrey Ivanov
хотя я вангую, что ты хочешь чтобы имена символов параметров становились ключами. так тоже можно, но макросом
Идеоматично ли это?
источник

AI

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

T

The2lb3oz4dr10½grOfHedgehogs in Clojure — русскоговорящее сообщество
Tim Plotnikov
Всем привет!
Мне нужно написать функцию, которая принимает 4 параметра (представим что это email,password,firstname,lastname) и создает мапу из этих параметров. Последние 2 - опциональны.
Вопрос такой: как идиоматично для clj написать такую функцию?
Я бы записал топроно:
(defn mk-record [email password firstname lastname]
 {:email     email
  :password  passowrd
  :firstname firstname
  :lastname  lastname})
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Azamat Kalimoulline
ПС: вопроса не понял. :)
Есть вариант указать несколько наборов параметров
(defn myfunc
 ([email password firstname lastname] …)
 ([email password firstname] …)
 ([email password lastname] …)
 ([email password] …))


Есть вариант иметь один набор параметров и каждый опциональный параметр проверять на nil и в зависимотри от этого добавлять в результат или нет)

Но мне кажется, что есть более простой подход (может какая-то функция в core) о котором я не знаю)
источник

AI

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

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
The2lb3oz4dr10½grOfHedgehogs
Я бы записал топроно:
(defn mk-record [email password firstname lastname]
 {:email     email
  :password  passowrd
  :firstname firstname
  :lastname  lastname})
Я не хочу чтобы ключи опциональных параметров появлялись в результирующей мапе если эти параметры не переданы или null
источник

T

The2lb3oz4dr10½grOfHedgehogs in Clojure — русскоговорящее сообщество
Tim Plotnikov
Я не хочу чтобы ключи опциональных параметров появлялись в результирующей мапе если эти параметры не переданы или null
А, так значит
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
в коде выше 2 и 3 варианты конфликтуют
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
Tim Plotnikov
Всем привет!
Мне нужно написать функцию, которая принимает 4 параметра (представим что это email,password,firstname,lastname) и создает мапу из этих параметров. Последние 2 - опциональны.
Вопрос такой: как идиоматично для clj написать такую функцию?
cond-> + assoc
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Andrey Ivanov
в коде выше 2 и 3 варианты конфликтуют
Точняк
источник

AI

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

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Забыл что я в динамике)
Тем более тогда это не подходит
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
а вообще вариант "удалить nil values" в жизни случается настолько часто, что проще сделать для него функцию в utils.clj
источник

AI

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

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
ты пытаешься жить с позиционной (!) передачей опциональных (!) параметров )
источник

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
а так не бывает без конфликтов
источник

TP

Tim Plotnikov in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
а вообще вариант "удалить nil values" в жизни случается настолько часто, что проще сделать для него функцию в utils.clj
Думаю это то, что мне нужно
источник