У меня есть эта карта:
%{
"a" => "1",
"b" => "2",
"c" => "3",
"d" => "4",
"e" => %{"f" => "5"}
}
И я могу повторить значение ключа следующим образом:
Enum.map(map, fn({k, v}) ->
v
end)
Используя fn ({k, v})
как кортеж, и я получаю что-то вроде этого:
["1", "2", "3", "4", %{"f" => "5"}]
Но я не понимаю, почему это не работает:
Enum.map(map, fn({k, v}) ->
case v do
{key, value} -> "inner map"
_ -> "something else"
end)
["something else", "something else", "something else", "something else",
"something else"]
Я могу сопоставить шаблон с картой fn({k, v})
, но я не могу использовать то же сопоставление с шаблоном для условия случая?
Обновление
Вот что я пытаюсь
some = %{"a" => "1", "b" => "2", "c" => "3", "d" => "4", "e" => %{"f" => "5"}}
Enum.map(some, fn({k, v}) ->
case v do
%{^condition => value} -> "inner map"
_ "something else"
end
end)
** (CompileError) iex:15: unknown variable ^condition. No variable "condition" has been defined before the current pattern
(stdlib) lists.erl:1354: :lists.mapfoldl/3