Что может быть хорошей заменой Enum.flat_map в Elixir? - PullRequest
0 голосов
/ 12 марта 2020

У меня есть программа, которая вызывает функцию, используя

Enum.flat_map(text, &lex_raw_tokens/1)

, но я изменила функцию "lex_raw_tokens", чтобы она имела 2 аргумента, что означает, что я не могу использовать flat_map, так как flat_map / 3 этого не делает существовать, насколько я знаю. Я не уверен, какую функцию использовать тогда, пока просто вызов функции как

lex_raw_tokens(text,line)

не совсем сработал, так как я получил ошибку аргумента. Я думаю, это потому, что приведенные аргументы являются списками, а функция нуждается в отдельных элементах списка, о которых заботится flat_map. Есть идеи?

1 Ответ

1 голос
/ 12 марта 2020

Возможно, самый простой способ - просто обернуть &lex_raw_tokens/2 в анонимную 1-арную функцию

# depending what `text` looks like
Enum.flat_map(text, &lex_raw_tokens(&1, line))
# or
Enum.flat_map(text, fn {text, line} -> lex_raw_tokens(text, line) end)
...