Эликсир трансформирует данные из одного списка со списками - PullRequest
0 голосов
/ 23 февраля 2020

Можете ли вы помочь мне с этими вопросами, пожалуйста

1 - Мои вопросы: Как преобразовать данные из одного списка со списками.

Например:

В этом списке преобразовать «Эликсир» в ->: Эликсир, числовая строка в целое число

[
    ["Language", "Elixir"],
    ["Language", "Python"],
    ["Language", "Rust"],
    ["Framework", "Phoenix", "1"]
]

2 - Мой второй вопрос: какие удобнее, обрабатывайте это как список или карты.

С уважением

1 Ответ

2 голосов
/ 23 февраля 2020

Преобразование вложенных списков может быть сделано разными способами; здесь наиболее подходящим было бы использование сопоставления с образцом в выражениях mapper.

input = [
    ["Language", "Elixir"],
    ["Language", "Python"],
    ["Language", "Rust"],
    ["Framework", "Phoenix", "1"]
]

Enum.map(input, fn
  [kind, name] ->
    [kind, String.to_atom(name)]
  [kind, name, ver] ->
    [kind, String.to_atom(name), String.to_integer(ver)]
end)
#⇒ [
#   ["Language", Elixir],
#   ["Language", :Python],
#   ["Language", :Rust],
#   ["Framework", :Phoenix, 1]
# ]

Использование карты было бы более удобным, поскольку вы могли бы разумно обрабатывать обновление независимо от того, представлен ключ или нет.

...