空地图警卫不工作

时间:2018-02-22 15:06:26

标签: elixir

为什么这个警卫不起作用?

def method(stuff, %{}), do: stuff

我必须检查地图大小才能使其正常工作?

def method(stuff, data) when map_size(data) == 0, do: stuff

第一个警卫不应该匹配空地图吗?

1 个答案:

答案 0 :(得分:2)

即使值包含模式中不存在的任何键,映射模式也会匹配。额外的键被默默忽略。检查map_size(map) == 0是检查参数是否为空映射的正确方法。