Size: a a a

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

2020 May 19

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Денис Нибаев
ну вот так работает
(condp get "DELETE"
   (if true #{"POST" "PUT"} #{"PUT"}) "SAVE"
   #{"DELETE"} "DELETE"
   "NOTHING")
ну так это почти то же самое — с трудом понимается алгоритм
источник

ДН

Денис Нибаев... in Clojure — русскоговорящее сообщество
Sergey Trofimov
ну так это почти то же самое — с трудом понимается алгоритм
да. просто get мне кажется симпатичнее))
логика такая что если на вход condp приходит какое-то значение еще до вычисления выражения нужно проверить еще подусловие
источник

ДН

Денис Нибаев... in Clojure — русскоговорящее сообщество
ближе к боевому примеру:
(condp get (:method source)
   (if (= "123" (:clientId source)) #{"POST" "PUT"} #{"PUT"})
   (foo/save bar)
   #{"DELETE"} (foo/delete bar)
   (foo/nothing))
источник

PP

Pavel Peganov in Clojure — русскоговорящее сообщество
Ну, есть такой вариант, дублирует nothing (но плохо ли это?), зато выглядит очень просто:
(case arg
   "POST" (if <some-clause> "SAVE" "NOTHING")
   "PUT" "SAVE"
   "DELETE" "DELETE"
   "NOTHING")
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Pavel Peganov
Ну, есть такой вариант, дублирует nothing (но плохо ли это?), зато выглядит очень просто:
(case arg
   "POST" (if <some-clause> "SAVE" "NOTHING")
   "PUT" "SAVE"
   "DELETE" "DELETE"
   "NOTHING")
да, так понятно, что происходит
источник

ДН

Денис Нибаев... in Clojure — русскоговорящее сообщество
Pavel Peganov
Ну, есть такой вариант, дублирует nothing (но плохо ли это?), зато выглядит очень просто:
(case arg
   "POST" (if <some-clause> "SAVE" "NOTHING")
   "PUT" "SAVE"
   "DELETE" "DELETE"
   "NOTHING")
да. спасибо за помощь. это тоже подходит
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Денис Нибаев
ближе к боевому примеру:
(condp get (:method source)
   (if (= "123" (:clientId source)) #{"POST" "PUT"} #{"PUT"})
   (foo/save bar)
   #{"DELETE"} (foo/delete bar)
   (foo/nothing))
(case (:method source)
   "POST" (when (= "123" (:clientId source))
            (foo/save bar))
   "PUT" (foo/save bar)
   "DELETE" (foo/delete bar)
   nil)
источник

ДН

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

a

akond in Clojure — русскоговорящее сообщество
а почему не просто (get {"POST" "SAVE" "PUT" "SAVE" "DELETE" "DELETE"} arg "NOTHING") ?
источник

KR

Kostyantin Randomnam... in Clojure — русскоговорящее сообщество
сложна нипанятна
источник

PP

Pavel Peganov in Clojure — русскоговорящее сообщество
akond
а почему не просто (get {"POST" "SAVE" "PUT" "SAVE" "DELETE" "DELETE"} arg "NOTHING") ?
Потому что для POST возможны разные ответы.
источник

PP

Pavel Peganov in Clojure — русскоговорящее сообщество
Вопрос в изначальной форме был задан довольно странно, хотелось на него ответить "SAVE". 🙃
источник

a

akond in Clojure — русскоговорящее сообщество
тогда можно core.match попробовать
источник

a

akond in Clojure — русскоговорящее сообщество
или better-cond
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
akond
или better-cond
источник

?

???? in Clojure — русскоговорящее сообщество
Dos
есть кто работал с pathom?
да, но если что есть канал в слаке #pathom
источник

AB

Alex Bubnov in Clojure — русскоговорящее сообщество
Прикольно, до меня как-то не доходило, что ->> может так интересно работать с макросами
источник
2020 May 20

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
я не понял, а в чем тут тайный смысл reverse делать?
источник

AR

Andrew Rudenko in Clojure — русскоговорящее сообщество
что это дает?
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Andrew Rudenko
я не понял, а в чем тут тайный смысл reverse делать?
если ты будешь использовать ->> то формы придется в обратном порядке писать
источник