= Enum.map(uids, &get_user(&1))
Enum.each(uids, &send_hello(uid))
написать:
users = Enum.map(uids, fn uid ->
send_hello(uid)
get_user(uid)
)
Вроде как и почему бы и нет? Но почему-то мне второй вариант кажется каким-то попахивающим не пойми чем.
Дохтур, у меня что-то с головой?
Всё правильно говоришь, выглядит отвратительно. Можешь придумать способ порицания для нарушителей.
Так ты отдели сайд-эффект от чистой функции И вызывай что-то типа uids |> Enum.map(&get_user/1) |> Enun.each(&send_hello/1) PS: Я тут немного логику поменял, соре
Вопрос-то не об этом. Вопрос о самом стиле. В какой-нибудь императивщине вот такой код не вызывает ни малейшего неприятия: User[] users; foreach(uid; uids) { users ~= getUser(uid); sendHello(uid); }
В императивном стиле это тоже выглядит не норм, у функции должна быть определенная задача. Либо получить список юзеров либо отправить всем сообщение
Ну так это не функция, а некая часть более общей функции.
Не нравится потому, что ты путаешь уровни абстракций. ids |> get_users |> send_notifications Enum функции уже детали реализации, которые ты должен спрятать за бизнес логикой
Да нет, просто пример корявый. В реальном моем случае уровни абстракции одинаковые.
Обсуждают сегодня