You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Elixir中Enum.map返回'(<P'而非数字数组的问题求助

问题原因解析

这不是Elixir的bug,也不是Enum.map调用格式错误,而是Elixir对**字符列表(charlists)**的默认显示规则导致的。

核心原因

Elixir会自动将所有元素都是有效ASCII码值(0-127)的整数列表渲染为字符字面量(单引号包裹的形式),而非原始的整数列表。

看你的第二个计算结果:

Enum.map([4, 6, 8], fn x -> x * 10 end)

实际生成的整数列表是[40, 60, 80],对应的ASCII字符分别是:

  • 40 → (
  • 60 → <
  • 80 → P

所以Elixir会把这个列表显示为'(<P'(你看到的'(&lt;P'是输出时的HTML转义结果,实际是'(<P')。

验证与解决

要查看原始的整数列表,可以在IO.inspect中指定charlists: :as_lists选项:

a = Enum.map([2, 3, 4], fn x -> x * 10 end)
b = Enum.map([4, 6, 8], fn x -> x * 10 end)
IO.puts "Program Start"
IO.inspect a
IO.inspect b, charlists: :as_lists
IO.puts "Program End"

输出会变成:

Program Start
[20, 30, 40]
[40, 60, 80]
Program End

另外需要注意:这种显示转换只是输出层面的表现,列表本身依然是整数列表,不会影响任何数值运算逻辑。比如执行hd(b)会返回40,Enum.sum(b)会返回180,完全符合预期。

内容的提问来源于stack exchange,提问作者lilHar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 05:12:35