Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 空地图保护不工作_Elixir - Fatal编程技术网

Elixir 空地图保护不工作

Elixir 空地图保护不工作,elixir,Elixir,为什么这个警卫不工作 def method(stuff, %{}), do: stuff 我必须检查地图的大小才能让它正常工作 def method(stuff, data) when map_size(data) == 0, do: stuff 第一个保护不应该匹配空映射吗?映射模式匹配,即使该值包含模式中不存在的任何键。额外的键将被悄悄忽略。检查map_sizemap==0是检查参数是否为空映射的正确方法。映射模式匹配,即使该值包含模式中不存在的任何键。额外的键将被悄悄忽略。检查map\

为什么这个警卫不工作

def method(stuff, %{}), do: stuff
我必须检查地图的大小才能让它正常工作

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

第一个保护不应该匹配空映射吗?

映射模式匹配,即使该值包含模式中不存在的任何键。额外的键将被悄悄忽略。检查map_sizemap==0是检查参数是否为空映射的正确方法。

映射模式匹配,即使该值包含模式中不存在的任何键。额外的键将被悄悄忽略。检查map\u sizemap==0是检查参数是否为空映射的正确方法。

我还建议您将is\u map与map\u size一起使用,以防止map\u size抛出BadMapError。@lapinkoira guard子句以when关键字开头,后跟布尔表达式:。因此,您可能需要修改问题中使用的术语,因为您提供的第一个代码示例不包含guard子句。@guard表达式中的Raghu函数不会向用户抛出错误。如果出现错误,则保护将自动计算为false,并跳过该子句。因此,map\u sizemap==0是正确的。我还建议您将is\u map与map\u size一起使用,以防止map\u size抛出BadMapError。@lapinkoira guard子句以when关键字开头,后跟布尔表达式:。因此,您可能需要修改问题中使用的术语,因为您提供的第一个代码示例不包含guard子句。@guard表达式中的Raghu函数不会向用户抛出错误。如果出现错误,则保护将自动计算为false,并跳过该子句。因此,map_sizemap==0是正确的。