在 Elixir 中将整数列表打印为字符串

Posted

技术标签:

【中文标题】在 Elixir 中将整数列表打印为字符串【英文标题】:Integer List printed as String in Elixir 【发布时间】:2017-03-12 12:25:46 【问题描述】:

我正在尝试使用Enum.map。当我将 100 添加到列表的所有元素时,我发现了这个奇怪的输出。

为什么会有这样的输出?事实证明,当我添加 100 时,我得到了一个字符串,但在我执行其他操作时工作得很好。又折腾了一些,还是得到了这样意想不到的结果。

【问题讨论】:

Elixir lists interpreted as char lists的可能重复 【参考方案1】:

您看到的'efgh' 的值不是字符串,而是Charlist。

您的语句的结果应该是[101, 102, 103, 104](实际上是),但它不会以这种方式输出。列表中的四个值以 ASCII 格式映射到 efgh,因此 iex 只打印它们的 codepoints 而不是列表。如果列表包含无效字符(例如 0 或 433,就像您的情况一样),它会将其保留为简单列表。

来自 Elixir 的Getting Started guide:

一个字符列表包含单引号之间的字符的代码点(请注意,默认情况下,IEx 只会在任何字符超出 ASCII 范围时输出代码点)。


'efgh'[101, 102, 103, 104] 在 Elixir 中是相等的,并证明您可以强制 inspect 将它们打印为列表:

[101, 102, 103, 104] == 'efgh'
#=> true

[101, 102, 103, 104] |> inspect(charlists: :as_lists)
#=> [101, 102, 103, 104]

您还可以将 IEx 配置为始终将字符列表打印为列表:

IEx.configure(inspect: [charlists: :as_lists])

【讨论】:

哇!感谢这个流畅的回答。我在发布这个问题时忽略了这部分。再次感谢! 您还可以配置 IEx(通过 ~/.iex.exs始终检查字符列表作为整数列表,使用 IEx.configure inspect: [charlists: :as_lists] 测试中如何配置全局字符列表?

以上是关于在 Elixir 中将整数列表打印为字符串的主要内容,如果未能解决你的问题,请参考以下文章

Elixir 列表解释为 char 列表

如何在ocaml中将字符串转换为整数列表?

在 Python 中将字符串列表转换为整数(或双精度)

在 Django Rest Framework 中将整数的 JSON 列表转换为字符串

将十六进制值的列表/字符串解压缩为整数

我如何在Elixir中将列表作为参数传递?