我想用整数类型的键创建一个映射,但这不起作用:
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)
要使用整数作为键,只需像这样使用它:
map = %{ 3 => "value" }
:3
是 Elixir 中的无效值;原子在 Elixir 中既不是字符串也不是整数,它们是常量,它们的名字就是它们的值。要使用只有 3
作为原子的键,你必须使用这个:
map = %{ :"3" => "value" }
使用
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
上面提到的答案已经不正确了
这是可行的:
iex(1)> m = %{2 => 3}
%{2 => 3}
这确实在幕后起作用,正如我们可以看到的那样:
iex(2)> Map.keys(m) |> List.first() |> is_integer
true