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,我正在使用长生不老药中的地图 有些是%{“foo”:“bar”}格式 还有一些在%{“foo”=>“bar”} 我有两张地图: a = %{"foo": "bar"} b = %{"foo" => "bar"} 我如何比较这两张地图 Map.equal?(a, b) 返回false您拥有的地图格式不同。他们有不同的钥匙 iex(1)> Map.equal? %{"foo": 4}, %{:"foo" => 4} true 使用第一个(“foo”:)只不过是编写第二个(:“

我正在使用长生不老药中的地图

有些是
%{“foo”:“bar”}
格式

还有一些在
%{“foo”=>“bar”}

我有两张地图:

a = %{"foo": "bar"}
b = %{"foo" => "bar"}
我如何比较这两张地图

Map.equal?(a, b)

返回
false

您拥有的地图格式不同。他们有不同的钥匙

iex(1)> Map.equal? %{"foo": 4}, %{:"foo" => 4}
true
使用第一个(
“foo”:
)只不过是编写第二个(
:“foo”=>
)的简写而已

当前的
Map.equal?/2
函数用于确保键和值相同

在Elixir
:“foo”
是一个原子,
“foo”
是一个二进制文件(有时称为字符串)

这就是为什么
Map.equal?/2
失败的原因,因为这两个值不相同

但是,如果您不关心类型的不同,而只关心类型的“内容”,则可以将所有键(可能还有值)转换为字符串,然后进行比较

for {key, value} <- my_map do
  {inspect(key), inspect(value)}
end

对于{key,value}也许这一点:我认为值得强调的是,
:foo==:“foo”
,引号用于处理一些非标准字符。是的。谢谢你,尼塔基。非标准字符的一个例子是空格。不能将带有空格的对象表示为不带引号的原子。
for {key, value} <- my_map do
  {inspect(key), inspect(value)}
end