为何从Map中取出的值会带有"Elixir."前缀?
解决Elixir Map取值带"Elixir."前缀的问题
这问题的核心是你用错了Elixir原子键的语法:
- 你定义Map时写的是
%{name => "Sean"},Elixir会把这种不带冒号的标识符默认解析成模块作用域下的原子,也就是:"Elixir.name",所以取值时才会出现带前缀的结果。
正确的Map定义写法有两种:
- 给原子键显式加冒号:
map = %{:name => "Sean"}
- 用Elixir简洁的键值语法(更推荐):
map = %{name: "Sean"}
用上面任意一种写法定义后,不管你用map.name还是Map.get(map, :name),都会直接返回"Sean",不会带多余前缀。
要是你好奇错误写法为啥能运行——Elixir允许这种跨模块的原子命名,但这完全不符合日常开发规范,别这么用就行。
内容的提问来源于stack exchange,提问作者Seanf
相关产品推荐
相关产品推荐

