Size: a a a

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

2020 July 18

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Mikhail Borisov
Мне тут нужна конструкция, которую я бы назвал cond-let, в принципе я нашел кое-что похожее, но не совсем https://github.com/walmartlabs/cond-let. Хотелось бы что-то в духе

(cond-let
   [x (get mymap :my-key)] (do-something x)
   ...)
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Спасибо, еще не до конца осознал, но уже скоро)
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Mikhail Borisov
Спасибо, еще не до конца осознал, но уже скоро)
simple made easy =)
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Я пока не понял, как тут ->> помогает)
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
И еще один минус в том, что мы вроде как через все условия так пройдем, а хочется остановиться на первом
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Чтобы не матчить 100500 регулярок)
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
Mikhail Borisov
Я пока не понял, как тут ->> помогает)
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Ну да, т.е. в этом примере нужно развернуть все формы и у нас будет:

(->> nil
   (if (= a b c) :false)
   (do (println c))
   ...
)

Правильно?
источник

MK

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

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Вооот, мне это не подходит, потому что у меня будут только if и нужно выпадать, если какой-то кейс подошел
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Но все равно спасибо, сохраню себе этот макрос)
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
(if (= a b c) :false)
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
ну вот :false и выпадет
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Так он же дальше полетит последним аргументом
источник

MK

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

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
(if (= a b c) :false ***  nil ***)
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
(do (println c) *** if ****)
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
<<- просто убирает лесенку
источник

MB

Mikhail Borisov in Clojure — русскоговорящее сообщество
Черт, я видимо неправильно понял)
источник

MK

Mikhail Kuzmin in Clojure — русскоговорящее сообщество
(<<-
(if true 1)
(if true 2)
(if true 3)    
4)  


(if true
 1
 (if true
   2
   (if true
     3    
     4)))
источник