required_keys = [ "a", "b", "c" ]
map_to_check = %{ "x" => "foo", "y" => "bar", "z" => "baz" }
鉴于上面的required_keys列表和map_to_check映射,我如何轻松测试map_to_check是否包含Elixir中required_keys列表中找到的所有键?
我知道我可以使用Map.has_key?(map_to_check, "a")
检查是否存在一个值。
尝试迭代required_keys给了我一个错误,因为我正在使用Enum.map:
Enum.map(required_keys, fn k -> Map.has_key?(Map.keys(map_to_check), k) end)
以上没有用,因为Enum.map不会迭代列表。
修改
通过查看答案,我注意到我的解决方案无法正常工作的原因并不是因为Enum.map无法迭代列表,而是因为我通过调用Map.has_key?
Map.keys(map_to_check)
函数
所以以下替代方案也应该有效:
Enum.map(required_keys, fn k -> Map.has_key?(map_to_check, k) end)