使用整数键创建地图

问题描述 投票:0回答:3

我想用整数类型的键创建一个映射,但这不起作用:

iex(1)> a = %{3: "fdsfd"}
** (SyntaxError) iex:1: unexpected token: ":" (column 8, codepoint U+003A)

iex(1)> a = %{:3 => "fdsfd"}
** (SyntaxError) iex:1: unexpected token: ":" (column 7, codepoint U+003A)
dictionary elixir
3个回答
8
投票

要使用整数作为键,只需像这样使用它:

map = %{ 3 => "value" }

:3
是 Elixir 中的无效值;原子在 Elixir 中既不是字符串也不是整数,它们是常量,它们的名字就是它们的值。要使用只有
3
作为原子的键,你必须使用这个:

map = %{ :"3" => "value" }

0
投票

使用

integer
atom
作为
Map
键的简写语法:

map = %{ "3": "value" }

试试看:

iex(1)> map = %{ "1": 420 }
%{"1": 420}

iex(2)> keys = Map.keys(map)
[:"1"]

iex(3)> List.first(keys) |> i
Term
  :"1"
Data type
  Atom

0
投票

上面提到的答案已经不正确了

这是可行的:

iex(1)> m = %{2 => 3}    
%{2 => 3}

这确实在幕后起作用,正如我们可以看到的那样:

iex(2)> Map.keys(m) |> List.first() |> is_integer
true
© www.soinside.com 2019 - 2024. All rights reserved.