【发布时间】:2016-01-19 19:56:09
【问题描述】:
我正在玩模式匹配,我发现,将方法的参数与空映射进行模式匹配并不容易。我认为它会是这样的:
defmodule PatternMatch do
def modify(%{}) do
%{}
end
def modify(map) do
# expensive operation
%{ modified: "map" }
end
end
但似乎第一个函数子句匹配任意映射:
iex> PatternMatch.modify(%{a: "map"})
==> %{}
还有其他方法可以检查空地图吗?
【问题讨论】:
-
函数子句的顺序也会影响这个问题吗?我的意思是空映射是否总是匹配,因此需要成为最后一个函数子句?