映射与无关紧要的密钥访问

Mid*_*ire 4 elixir

使用定义为原子或字符串的键在Map上匹配的最佳做法是什么?

%{"artist" => artist, "track" => track, "year" => year}
Run Code Online (Sandbox Code Playgroud)

VS

%{artist: artist, track: track, year: year}
Run Code Online (Sandbox Code Playgroud)

功能需要匹配两者:

def duplicate_post(%{"artist" => artist, "track" => track, "year" => year}) do
  ...
end
Run Code Online (Sandbox Code Playgroud)

Dog*_*ert 6

我能想到的最好的方法是定义函数两次,每种输入一次,并从另一种调用其中一种.

def duplicate_post(%{"artist" => artist, "track" => track, "year" => year}) do
  duplicate_post(%{artist: artist, track: track, year: year})
end

def duplicate_post(%{artist: artist, track: track, year: year}) do
  ...
end
Run Code Online (Sandbox Code Playgroud)