2017-06-18 7 views

答えて

5

、私は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" 
+1

@のdogbertのソリューションを使用して、そして、私自身のいくつかは、私は、[このGitHubのの要旨に一部のスーパー非公式のベンチマーキングをしました( https://gist.github.com/amorphid/9bd536cfe19d2a3230c61a349b615aab)。 3百万の要素でそれを実行すると、私はあまりにも多くの原子を持つBEAMをクラッシュしました:) – amorphid

+0

今日私はEnum.map_join/3について学んだ: –

関連する問題