Elixir脚本中Enum.to_list报‘第二个参数无效’问题排查
Elixir脚本错误原因及修复
错误根源在
String.split(line, ';'):Elixir中';'是字符列表(charlist)类型,而String.split/2的第二个参数要求是字符串(binary)或正则表达式。传入字符列表会触发参数匹配错误,错误提示指向Enum.to_list是因为管道流是延迟执行的,只有当Enum.to_list触发流计算时,之前的错误才会暴露出来。修复后的代码:
File.stream!(cfile) |> Stream.map(fn line -> line |> String.trim() |> String.split(";") end) |> Enum.to_list() |> IO.inspect()
- 把
';'改为字符串形式的";",符合String.split的参数要求 - 增加
String.trim()去除每行末尾的换行符,避免最后一个字段携带换行残留 - 用
IO.inspect()替代IO.puts(),更适合打印列表的列表这种复杂数据结构,能清晰展示层级
内容的提问来源于stack exchange,提问作者user1934428
相关产品推荐
相关产品推荐

