Elixir列表输出异常:生成列表输出为^A^B^C而非预期[1,2,3]
解决Elixir列表输出显示为AB^C的问题
嘿,这个坑我之前也踩过!让我给你理清楚问题出在哪,以及怎么解决:
问题根源
你看到的^A^B^C其实是ASCII控制字符——在Elixir里,当你把整数列表直接放到字符串插值(#{})里,或者直接传给IO.puts/1时,Elixir会默认把列表里的每个整数当作ASCII码值解析成对应字符:
- 1对应ASCII的SOH(标题开始),显示为
^A - 2对应STX(文本开始),显示为
^B - 3对应ETX(文本结束),显示为
^C
这就是为什么你没得到预期的[1,2,3],而是一堆奇怪的符号。
解决方案
要正确输出列表的结构化形式,你需要用inspect/1函数把列表转换成人类可读的字符串表示,有两种常用方式:
方式1:在字符串插值中使用inspect
把inspect(nodelist_master)的结果放到插值里,避免Elixir把列表当作字符列表解析:
n = 3 nodelist_master = Enum.into(1..n, []) IO.puts "List: #{inspect(nodelist_master)}" # 输出:List: [1, 2, 3]
方式2:直接用IO.inspect调试输出
Elixir专门提供了IO.inspect/2用于调试,它不仅会输出数据的结构化形式,还会返回原数据,很适合链式调用:
n = 3 nodelist_master = Enum.into(1..n, []) IO.inspect(nodelist_master, label: "List") # 输出:List: [1, 2, 3]
小提醒
如果直接写IO.puts(nodelist_master),同样会输出^A^B^C,因为IO.puts/1对列表参数会默认按字符列表处理。所以只要是需要结构化显示列表,一定要用inspect来处理哦!
内容的提问来源于stack exchange,提问作者Edward Hasted
相关产品推荐
相关产品推荐

