首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >String.to_atom导致and和atom中隐藏双引号

String.to_atom导致and和atom中隐藏双引号
EN

Stack Overflow用户
提问于 2017-08-29 00:56:06
回答 2查看 757关注 0票数 2

我在下面的代码中使用了一对列表来获取映射,其中一个列表是键,另一个列表是值。非常简单的代码:

代码语言:javascript
复制
defp create_data_map(columns, row) do
  Enum.zip(columns, row)
  |> Enum.into(%{}, fn {k, v} ->
    {String.to_atom(k), v}
  end)
end

我从一个csv文件中获得这些列表,其中列是第一行,这是标题列表,第二行是其后的任意一行。标题如下所示:

代码语言:javascript
复制
["action", "source_application", "partner_name", "detail", "college_name",
 "ipeds_id", "deleted", "deleted_at", "athlete_id", "athlete_email",
 "athlete_first_name", "athlete_last_name", "athlete_sport_id",
 "athlete_sport_name", "pass_uuid", "coach_id", "coach_id", 
 "coach_email",
 "coach_first_name", "coach_last_name", "coach_position", "coach_sport_id",
 "coach_sport_name", "occurred_at"]

由于某些原因,在调用String.to_atom/1之后,‘Action键’结束为:"action"。其他密钥都没有这个问题。它们都是正确形成的原子。

我看不出这个操作键与其他键有什么不同,除了它位于列表的开头。

EN

回答 2

Stack Overflow用户

发布于 2017-09-26 04:40:23

使用String.to_atom()进行转换时,Atom有三种不同的显示方式

Atom

  • :“Atom-”or :"atom-"

  • :Atom或Atom

上面的3个都是原子。它们之间唯一的区别是字符串的格式化方式。

对于任何也包含特殊字符(如#$%- ... )的普通字符串,将获得

  1. 第一个

iex> "Atom-" |> String.to_atom

然后,:"Atom-"

  • 类似于functions名称在elixir中如何巧妙地格式化。即字符串以字母开头,其余字符串只能包含字母、数字或三个特殊字符_!@。iex> "Atom" |> String.to_atom

在Elixir中,:Atom,,

  • :Atom

  • ,同样以同样的方式巧妙地命名。因为在内部,模块名称也只是原子。字符串应以Elixir.开头,后跟大写字母,并且只能包含字母。iex> "Elixir.Atom" |> String.to_atom

Atom​​​

Module Names: Elixir, Erlang, and Atoms

Understanding Aliases

票数 1
EN

Stack Overflow用户

发布于 2017-08-30 16:34:31

inspect/1将您的原子呈现为:"hello world"时,原子的名称包含诸如空格、点或大写字母之类的字符。

可以看出为什么不能将上面的原子引用为:hello world,因为它会将world解释为变量。

它们仍然是有效的原子,尽管在您的代码中使用它们可能会更加困难。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45923933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档