Size: a a a

2020 November 04

DF

Denis Fakhrtdinov in pro.elixir
Тем самым ты делаешь функцию грязной ведь.
источник

LL

Lama Lover in pro.elixir
Denis Fakhrtdinov
Тем самым ты делаешь функцию грязной ведь.
Я говорю про DI в компайле
Типа подменить модуль для тестов. Или задать Ecto.Repo в компайле

Пока что в elixir есть только один способ это сделать: аттрибуты модуля. Что выглядит очень костыльно и контроллируется в используемом, а не использующем коде
источник

DF

Denis Fakhrtdinov in pro.elixir
Ну собери всю логику DI в генерируемом в рантайме коде.
источник

DF

Denis Fakhrtdinov in pro.elixir
В смысле, в генерируемом в рантайме модуле.
источник

LL

Lama Lover in pro.elixir
Не понял что ты имеешь в виду

Но генерация кода в рантайме — это chaotic evil прям
источник

DF

Denis Fakhrtdinov in pro.elixir
Тогда и DI — это chaotic evil, не вижу разницы.
источник

T

Tharin in pro.elixir
Lama, но иногда ведь и в рантайме надо решить, что делать
источник

T

Tharin in pro.elixir
ну вот один из примеров
источник

T

Tharin in pro.elixir
неужели тут огромная разница в скорости вызова?
источник

T

Tharin in pro.elixir
(да скриншот)
источник

DF

Denis Fakhrtdinov in pro.elixir
Ну померь.
источник

LL

Lama Lover in pro.elixir
Tharin
неужели тут огромная разница в скорости вызова?
Когда в рантайме — это другой разговор. В рантайме для этого есть протоколы
Я говорю про DI в компайле
источник

T

Tharin in pro.elixir
Lama Lover
Когда в рантайме — это другой разговор. В рантайме для этого есть протоколы
Я говорю про DI в компайле
видимо, мы друг друга реально сразу не поняли) Ну я традиционно использую модульные аттрибуты и тоже считаю это костылём.
источник

T

Tharin in pro.elixir
Это, как минимум, выглядит, как костыль.
источник

DF

Denis Fakhrtdinov in pro.elixir
А макросами это не разруливается?
источник

DF

Denis Fakhrtdinov in pro.elixir
Казалось бы то самое место где они пригодились бы.
источник

LL

Lama Lover in pro.elixir
Denis Fakhrtdinov
А макросами это не разруливается?
Да, я думаю можно что-то такое сделать
Но пока что я ничего особенно серьёзного не встречал
источник

LL

Lama Lover in pro.elixir
Проблема макросов в elixir в том, что AST очень плохо отражает граф вызовов. Типа в
quote do
 func(x, y)
end


Будет не понятно что это за func, из какого модуля это, макрос ли это и вообще есть ли такая функция
источник

DF

Denis Fakhrtdinov in pro.elixir
🙂
источник

DF

Denis Fakhrtdinov in pro.elixir
Проблема макросов в elixir в том, что их пихают куда надо и куда не надо.
источник