Size: a a a

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

2020 July 25

DK

Denis Krivosheev in Clojure — русскоговорящее сообщество
The2lb3oz4dr10½grOfHedgehogs
Что думаете о такой деструктуризации аргументов? Нечитаемая обфускация или декларативно и интуитивно?
(defn inc-unit [unit {unit-value unit, :or {unit-value (get-min-value value unit)}, :as value}]
 '...)

У меня её линтер не вывозит, но кложура исполняет хорошо
Честно пытался вникнуть но так и не понял как это работает... функция от двух аргументов, первый идёт в unit, второй деструктурируется, где в юнит-вэлуе идёт значение из ключа юнит, или минимальное значение, а в общем это все идёт в значение вэлуе
источник

DK

Denis Krivosheev in Clojure — русскоговорящее сообщество
Мне кажется очень сложно
источник

DK

Denis Krivosheev in Clojure — русскоговорящее сообщество
Но не то что деструктуризация плохая а сама идея сложная
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Denis Krivosheev
Но не то что деструктуризация плохая а сама идея сложная
Ну типа написал я ее не парясь
источник

DK

Denis Krivosheev in Clojure — русскоговорящее сообщество
А что вообще надо сделать то?
источник

DK

Denis Krivosheev in Clojure — русскоговорящее сообщество
Я бы наверное сделал эту функцию с двойной арностью. Одиночная арность вызывает двойную с дефолтными параметрами, а двойная делает очень простую деструктуризацию
источник

DK

Denis Krivosheev in Clojure — русскоговорящее сообщество
Щас напишу
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Denis Krivosheev
Я бы наверное сделал эту функцию с двойной арностью. Одиночная арность вызывает двойную с дефолтными параметрами, а двойная делает очень простую деструктуризацию
Можно двойную арность и внутри let с [unit-value (get value unit)]
источник

DK

Denis Krivosheev in Clojure — русскоговорящее сообщество
The2lb3oz4dr10½grOfHedgehogs
Можно двойную арность и внутри let с [unit-value (get value unit)]
да думаю так будет лучше
источник

DK

Denis Krivosheev in Clojure — русскоговорящее сообщество
а какая вообще структура у второго аргумента?
источник

DK

Denis Krivosheev in Clojure — русскоговорящее сообщество
почему не кидаться штуками попроще типа [3 :px]
источник

DK

Denis Krivosheev in Clojure — русскоговорящее сообщество
или в чем там измеряется
источник

DK

Denis Krivosheev in Clojure — русскоговорящее сообщество
думаю тут надо глубже нырять в предметную область чтобы понять хорошо это написано или не очень
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Denis Krivosheev
а какая вообще структура у второго аргумента?
unit :hour
value {:hour 12, :min 30}
unit-value 12
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Denis Krivosheev
Мне кажется очень сложно
Хаскель хорошо тренерует такое читать. Там частно сначала использование, потом объявление
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Я думаю, оставлю эту деструктуризацию. Писать обскурную фигню -- мой стиль
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Но буду знать, что читать такое тяжело
источник

DK

Denis Krivosheev in Clojure — русскоговорящее сообщество
Если заменить {:hour 12 :min 30} на {:value 12 :min 30} то будет проще, и деструктуризация простая и мы уже знаем что речь идёт об :hour по первому параметру
источник

DK

Denis Krivosheev in Clojure — русскоговорящее сообщество
Но тут опять таки от предметной области зависит... но на беглый взгляд выбранная структура немного странная
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Denis Krivosheev
Если заменить {:hour 12 :min 30} на {:value 12 :min 30} то будет проще, и деструктуризация простая и мы уже знаем что речь идёт об :hour по первому параметру
Не, так нельзя
источник