Size: a a a

2020 December 29

P

Pavel in pro.elixir
Lama Lover
А что не так с apply ?
Ну может есть более элегантное решение, решение с apply все-равно придется "мини" роутер писать, просто через макросы по факту
источник

LL

Lama Lover in pro.elixir
Я предлагаю что-то типа
источник

LL

Lama Lover in pro.elixir
def process(taskname, args) do
 {module, func} = worker_for(taskname)
 apply(module, func, [args])
end
источник

LL

Lama Lover in pro.elixir
Pavel
Ну может есть более элегантное решение, решение с apply все-равно придется "мини" роутер писать, просто через макросы по факту
Более элегантного решения нет
Твоя задача сводится к "в зависимости от данных, хочу вызывать разный код"

В императивных языках ты бы писал огромный вложенный if-else или огромный case

Тут у тебя хотя бы есть pattern-matching и apply
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Элегантное решение - протоколы
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Придётся сделать парочку структур правда тогда
источник

DF

Denis Fakhrtdinov in pro.elixir
У тебя получится тот же самый case, только он будет приводить к созданию разных структур данных, которые затем автомагически будут дергать разные функции.
источник

AF

Andrey Fadeev in pro.elixir
А в подходе с протоколами не придется ли делать где-то подобную функцию декодирования в одну из структур? Но так да, выглядит несколько удобнее
источник

P

Pavel in pro.elixir
Ну считай структура будет одна - это условно "задача"
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Смотря как делать. Можно Kernel.struct и binary_to_existing_atom.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Но вообще говоря, если хочешь провалидировать - все равно будет case
источник

LL

Lama Lover in pro.elixir
Ну вы хотите организовать ветвление кода, чтобы в зависимости от данных был разный код

Не писать кода для роутинга тут не получится, потому что программа сама по себе не поймёт в какой обработчик нужно оправлять те или иные данные

Так что придётся писать роутинг в любом случае

Протоколы/кейсы/if-else это всё одно и то же, просто под разным соусом
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Другое дело что если есть типы, то отображение вместо валидации - это хорошая практика
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Правда elixir нельзя назвать языком с типами, так что вообще похер как решать эту задачу
источник

LL

Lama Lover in pro.elixir
Да, во всяких идрисах вводят зависимые типы, которые определяют реализацию конкретного интерфейса в зависимости от состава данных
источник

ГО

Галина Останина... in pro.elixir
👋
источник

T

TGG in pro.elixir
источник

T

TGG in pro.elixir
Тут бот
источник

I

Ilya in pro.elixir
🙏
источник
2020 December 30

T

TGG in pro.elixir
Приветствую.
А как escript создать?
И вообще, для чего Escript нужен?
источник