Получить конкретный ключ и остальную часть карты с помощью Pattern Matching в Elixir - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь получить один элемент и остальную часть карты с сопоставлением с шаблоном, но я получаю только ошибки компиляции.

Я придумал это:

%{“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}

В эликсире есть способ добиться этого?

1 Ответ

0 голосов
/ 05 июня 2018

В Elixir нет синтаксиса для этого, начиная с версии 1.6, но если вы хотите удалить только одно значение с карты одновременно, вы можете использовать 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}
...