Size: a a a

2019 April 04

ME

Marsel Etsamoe in pro.elixir
подскажите плиз, как можно удобно сделать такое.
у меня есть несколько модулей, в каждом есть несколько функций которые принимают на вход помимо остальных аргументов некий лист.
сейчас в функции этот лист обрабатывается целиком, но мне нужно чтобы в каждой из этих функций лист обрабатывался частями, типа как через Enum.chunk_every/2.
как можно это практичнее реализовать, чтобы не добавлять в каждую функцию
Enum.chunk_every/2 |> Enum.map(...) ... |> List.flatten()
и т.д
через макрос это можно?
источник

EP

Eugene Pirogov in pro.elixir
> мне нужно чтобы в каждой из этих функций лист обрабатывался частями

т.е. каждая из множества упомянутых функций должна обработать какой-то свой кусочек списка?
источник

ME

Marsel Etsamoe in pro.elixir
не совсем, сейчас попытаюсь показать
источник

ŹR

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

ПК

Павел Калашников in pro.elixir
Коллеги, подскажите, а в этом чате есть бот, который изгоняет всех пришедших, кто не отвечает на вопрос при входе?
источник

ПК

Павел Калашников in pro.elixir
Хочу в чат @it_way_chat добавить его.
источник

ŹR

Źmićer Rubinštejn in pro.elixir
источник

ME

Marsel Etsamoe in pro.elixir
Eugene Pirogov
> мне нужно чтобы в каждой из этих функций лист обрабатывался частями

т.е. каждая из множества упомянутых функций должна обработать какой-то свой кусочек списка?
def func1(conn, data) do
 Enum.chunk_every(data, 50)
 |> Enum.map(fn pack ->
   Enum.map(pack, fn d ->
     ....
   end)
 end)
 |> List.flatten
end
источник

ПК

Павел Калашников in pro.elixir
спасибо!_)
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Marsel Etsamoe
def func1(conn, data) do
 Enum.chunk_every(data, 50)
 |> Enum.map(fn pack ->
   Enum.map(pack, fn d ->
     ....
   end)
 end)
 |> List.flatten
end
Можно каррировать
источник

ME

Marsel Etsamoe in pro.elixir
Źmićer Rubinštejn
Ты уверен, что вместо написания двух функций в пайпе во всех своих модулях хочешь день проебаться с написанием макроса, который надо будет также импортировать в каждый модуль?
не уверен) но n раз написать весь пайп мне показалось не так круто как сделать такой макрос)
источник

EP

Eugene Pirogov in pro.elixir
у меня вопрос – зачем сразу макрос? почему нельзя обойтись какой-то Utility функцией?
источник

NK

ID:382338188 in pro.elixir
Marsel Etsamoe
def func1(conn, data) do
 Enum.chunk_every(data, 50)
 |> Enum.map(fn pack ->
   Enum.map(pack, fn d ->
     ....
   end)
 end)
 |> List.flatten
end
flatten в конце и куча мапов вложенных наводит на мысль может тебе тут Stream подошел бы?
источник

EP

Eugene Pirogov in pro.elixir
def prepare_list(data) do
 data
 |> Enum.chunk_every(50)
 |> Enum.flat_map(fn pack ->
      Enum.map(pack, fn d ->
        # ...
      end)
    end)
end
источник

AG

Alex Golubov in pro.elixir
источник

ME

Marsel Etsamoe in pro.elixir
Eugene Pirogov
def prepare_list(data) do
 data
 |> Enum.chunk_every(50)
 |> Enum.flat_map(fn pack ->
      Enum.map(pack, fn d ->
        # ...
      end)
    end)
end
в общем то да, можно так
источник

ME

Marsel Etsamoe in pro.elixir
примерно о таком тоже подумал, но передавать довольно длинное тело функции как параметр как-то не понравилось
источник

ME

Marsel Etsamoe in pro.elixir
ID:382338188
flatten в конце и куча мапов вложенных наводит на мысль может тебе тут Stream подошел бы?
не особо, лист по идее не настолько большой, просто внутренняя обработка требует ограничить количество
источник

ME

Marsel Etsamoe in pro.elixir
всем спасибо, пока остановлюсь на варианте с Utility функцией
источник

ME

Marsel Etsamoe in pro.elixir
Marsel Etsamoe
примерно о таком тоже подумал, но передавать довольно длинное тело функции как параметр как-то не понравилось
туплю, и там и там же все равно придется функцию передавать. ну ладно)
источник