Elixir - 如何将关键字列表转换为字符串?
问题描述:
我有一个关键字列表:[key1: "value", key2: "value2", key3: "value3"]
Elixir - 如何将关键字列表转换为字符串?
我想将其转换成字符串:"key1:value1&key2:value2&key3:value3"
我想用Enum.reduce,但会是怎样的函数的自变量?
答
既然你想它们映射后值之间添加一个分隔符,我建议使用Enum.map_join/3
:
iex(1)> list = [key1: "value", key2: "value2", key3: "value3"]
[key1: "value", key2: "value2", key3: "value3"]
iex(2)> list |> Enum.map_join("&", fn {k, v} -> "#{k}:#{v}" end)
"key1:value&key2:value2&key3:value3"
这是你如何可以用Enum.reduce/3
做到这一点(有一个额外的&
在插入)正在被使用去除String.trim_leading/1
开始:
iex(3)> list |> Enum.reduce("", fn {k, v}, acc -> "#{acc}&#{k}:#{v}" end) |> String.trim_leading("&")
"key1:value&key2:value2&key3:value3"
使用@ dogbert的解决方案,并和一些我自己的,我做了一些超级非正式标杆[在此GitHub的要点]( https://gist.github.com/amorphid/9bd536cfe19d2a3230c61a349b615aab)。当运行300万个元素时,我撞击了太多原子的BEAM :) – amorphid
今天我了解了Enum.map_join/3 :) –