Elixir 使用列表从一个列表转换数据
Elixir tranform data from one List with lists
你能帮我解决这个问题吗
1 - 我的问题是如何使用列表转换来自一个列表的数据。
例如:
在此列表中,将 "Elixir" 转换为 --> :Elixir,将数字字符串转换为整数
[
["Language", "Elixir"],
["Language", "Python"],
["Language", "Rust"],
["Framework", "Phoenix", "1"]
]
2 - 我的第二个问题是哪个更方便,将其作为列表或地图来处理。
此致
可以通过多种方式转换嵌套列表;这里最合适的是在映射器的子句中使用模式匹配。
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]
# ]
使用地图会更方便,因为无论是否提供密钥,您都可以明智地处理更新。
你能帮我解决这个问题吗
1 - 我的问题是如何使用列表转换来自一个列表的数据。
例如:
在此列表中,将 "Elixir" 转换为 --> :Elixir,将数字字符串转换为整数
[
["Language", "Elixir"],
["Language", "Python"],
["Language", "Rust"],
["Framework", "Phoenix", "1"]
]
2 - 我的第二个问题是哪个更方便,将其作为列表或地图来处理。
此致
可以通过多种方式转换嵌套列表;这里最合适的是在映射器的子句中使用模式匹配。
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]
# ]
使用地图会更方便,因为无论是否提供密钥,您都可以明智地处理更新。