Size: a a a

2020 May 20

AA

Adilet Abylov in pro.elixir
да, я тоже так думаю
источник

KA

Kanat Amren in pro.elixir
источник

AA

Adilet Abylov in pro.elixir
я вот пишу и на го и на эликсире, и после периода “какое же го говно”, успокоился и пришел к выводу, что сравнивать го и эликсир некорректно.
Это два разных инструмента, для разных задач.
источник

LL

Lama Lover in pro.elixir
Adilet Abylov
Ребята, насколько легально вызывать use не в начале модуля, а где-то посередине, а именно после конкретной функции?
Это можно делать, но обычно так не делают. Будет очень сложно понять что именно ты пытаешься сделать
источник

A

Aldar in pro.elixir
Adilet Abylov
я вот пишу и на го и на эликсире, и после периода “какое же го говно”, успокоился и пришел к выводу, что сравнивать го и эликсир некорректно.
Это два разных инструмента, для разных задач.
Про это в статье и пишут
источник

P

Pavel in pro.elixir
Пример в статье просто ужасный
источник

P

Pavel in pro.elixir
Что на эликсире, что на Golang
источник

P

Pavel in pro.elixir
На Golang - какой-то адов код, с паникой, лишними обработками. На Elixir - вообще плюют на обработку ошибок, что тоже такое себе
источник

P

Pavel in pro.elixir
Ну и сравнение Go == C++, а Rust == C это какой-то запредельный ад, когда все совсем наоборот. Go - это упрощенный Си, а Rust - это замена и Си и Крестам
источник

P

Pavel in pro.elixir
Ну и финалочка Go has built in concurrency using the CSP model, and it can call into C libraries very efficiently. Человек просто не слушал Роба Пайка, который говорил CGO is not Go. И использование CGO это отдельный адок, как с NIF
источник

LL

Lama Lover in pro.elixir
Pavel
Ну и сравнение Go == C++, а Rust == C это какой-то запредельный ад, когда все совсем наоборот. Go - это упрощенный Си, а Rust - это замена и Си и Крестам
По-моему, Go и C достаточно далеки друг от друга
источник

SM

Sergei Maximov in pro.elixir
Adilet Abylov
Ребята, насколько легально вызывать use не в начале модуля, а где-то посередине, а именно после конкретной функции?
Очень сложно придумать для такого валидный юз-кейс, звучит так, как будто ты хочешь сделать что-то странное
источник

P

Pavel in pro.elixir
Lama Lover
По-моему, Go и C достаточно далеки друг от друга
Еще дальше Go и C++. Go как раз в основном начал свой путь как замена Си. В Badoo/Mail/Yandex ну и так далее. Не крестов, а именно си кода.
источник

AA

Adilet Abylov in pro.elixir
Sergei Maximov
Очень сложно придумать для такого валидный юз-кейс, звучит так, как будто ты хочешь сделать что-то странное
попробую расписать кейс.

У меня есть некий модуль AbstractValidator с функцией validate(map)

В модуле MyVaidator я юзаю AbstractValidator через use

И в MyValidator я хотел еще сделать такую функцию validate(%{foo => map}), do: validate(map)

Диалайзер предупредил, что моя функция никогда не вызовется, т.к. validate(map) из AbstractValidator  покрывает все кейсы и она выше.

Я попробовал поставить use после моей функции validate и все сработало как я и задумывал.
Но сильно засомневался, что это правильно, т.к. через месяц я забуду, зачем я так сделал и нафиг оно такое надо.
В итоге просто сделал другую функцию.

ООП мышление включилось)
источник

LL

Lama Lover in pro.elixir
Adilet Abylov
попробую расписать кейс.

У меня есть некий модуль AbstractValidator с функцией validate(map)

В модуле MyVaidator я юзаю AbstractValidator через use

И в MyValidator я хотел еще сделать такую функцию validate(%{foo => map}), do: validate(map)

Диалайзер предупредил, что моя функция никогда не вызовется, т.к. validate(map) из AbstractValidator  покрывает все кейсы и она выше.

Я попробовал поставить use после моей функции validate и все сработало как я и задумывал.
Но сильно засомневался, что это правильно, т.к. через месяц я забуду, зачем я так сделал и нафиг оно такое надо.
В итоге просто сделал другую функцию.

ООП мышление включилось)
Убери этот AbstractValidator, не позорься. Используй @behaviour
источник

AA

Adilet Abylov in pro.elixir
Lama Lover
Убери этот AbstractValidator, не позорься. Используй @behaviour
госпаде, я его так назвал что бы пример понятен был
источник

SM

Sergei Maximov in pro.elixir
Adilet Abylov
попробую расписать кейс.

У меня есть некий модуль AbstractValidator с функцией validate(map)

В модуле MyVaidator я юзаю AbstractValidator через use

И в MyValidator я хотел еще сделать такую функцию validate(%{foo => map}), do: validate(map)

Диалайзер предупредил, что моя функция никогда не вызовется, т.к. validate(map) из AbstractValidator  покрывает все кейсы и она выше.

Я попробовал поставить use после моей функции validate и все сработало как я и задумывал.
Но сильно засомневался, что это правильно, т.к. через месяц я забуду, зачем я так сделал и нафиг оно такое надо.
В итоге просто сделал другую функцию.

ООП мышление включилось)
Можно сделать это в @before_compile, можно попробовать использовать @on_definition или кастомный макрос, но правда в том, что тебе тут use, судя по примеру, вообще не нужен, написанный руками validate(%{foo: map}), do: AbstractValidator.validate(map) будет нагляднее и проще.
источник

SM

Sergei Maximov in pro.elixir
Ну либо приведи код тогда, чтобы было понятнее.
источник

AA

Adilet Abylov in pro.elixir
Sergei Maximov
Можно сделать это в @before_compile, можно попробовать использовать @on_definition или кастомный макрос, но правда в том, что тебе тут use, судя по примеру, вообще не нужен, написанный руками validate(%{foo: map}), do: AbstractValidator.validate(map) будет нагляднее и проще.
я сделал в итоге по простому, рассудив, что ясность в этом кейсе должна быть на первом месте
источник

P

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