Dictionary 使用Elixir中的模式匹配获取特定键和地图的其余部分

Dictionary 使用Elixir中的模式匹配获取特定键和地图的其余部分,dictionary,pattern-matching,elixir,Dictionary,Pattern Matching,Elixir,我试图通过模式匹配获得一个元素和映射的其余部分,但我只得到编译错误 我想到了这个: %{“One” => one | tail} = %{“One" => 1, "Three" => 3, "Two" => 2} 但是我得到了编译错误,说它应该是键值对 我试图实现的行为是: %{“One” => one | tail} = %{“One" => 1, "Three" => 3, "Two" => 2} one = 1 tail = %{"Thre

我试图通过模式匹配获得一个元素和映射的其余部分,但我只得到编译错误

我想到了这个:

%{“One” => one | tail} = %{“One" => 1, "Three" => 3, "Two" => 2}
但是我得到了编译错误,说它应该是键值对

我试图实现的行为是:

%{“One” => one | tail} = %{“One" => 1, "Three" => 3, "Two" => 2}
one = 1
tail = %{"Three" => 3, "Two" => 2}

在elixir中有一种方法可以实现这一点?

从版本1.6开始,elixir中没有语法,但是如果您想一次只从映射中删除一个值,可以使用
map.pop/2

iex(1)> {one, tail} = Map.pop(%{"One" => 1, "Three" => 3, "Two" => 2}, "One")
{1, %{"Three" => 3, "Two" => 2}}
iex(2)> one
1
iex(3)> tail
%{"Three" => 3, "Two" => 2}

非常确定没有语法,但是如果你只想删除一个键,你可以使用
Map.pop/3
Map.pop(%%{a:1,b:2},:a)#=>{1,%%{b:2}
,效果很好。谢谢