169 похожих чатов

Кошерно ли в Enum.map вызывать функции с сайд-эффектами? Типа вместо: users

= Enum.map(uids, &get_user(&1))
Enum.each(uids, &send_hello(uid))
написать:
users = Enum.map(uids, fn uid ->
send_hello(uid)
get_user(uid)
)
Вроде как и почему бы и нет? Но почему-то мне второй вариант кажется каким-то попахивающим не пойми чем.
Дохтур, у меня что-то с головой?

7 ответов

1 просмотр

Всё правильно говоришь, выглядит отвратительно. Можешь придумать способ порицания для нарушителей.

Так ты отдели сайд-эффект от чистой функции И вызывай что-то типа uids |> Enum.map(&get_user/1) |> Enun.each(&send_hello/1) PS: Я тут немного логику поменял, соре

Евгений- Автор вопроса
Lama Lover
Так ты отдели сайд-эффект от чистой функции И выз...

Вопрос-то не об этом. Вопрос о самом стиле. В какой-нибудь императивщине вот такой код не вызывает ни малейшего неприятия: User[] users; foreach(uid; uids) { users ~= getUser(uid); sendHello(uid); }

Евгений
Вопрос-то не об этом. Вопрос о самом стиле. В како...

В императивном стиле это тоже выглядит не норм, у функции должна быть определенная задача. Либо получить список юзеров либо отправить всем сообщение

Евгений- Автор вопроса
Anastasiya Dyachenko
В императивном стиле это тоже выглядит не норм, у ...

Ну так это не функция, а некая часть более общей функции.

Не нравится потому, что ты путаешь уровни абстракций. ids |> get_users |> send_notifications Enum функции уже детали реализации, которые ты должен спрятать за бизнес логикой

Евгений- Автор вопроса
Ihor Katkov 🇺🇦
Не нравится потому, что ты путаешь уровни абстракц...

Да нет, просто пример корявый. В реальном моем случае уровни абстракции одинаковые.

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта