这是我要为Elixir 1.0.3运行的程序:
IO.puts "putstest"
div2 = fn inputnum ->
[:a, inputnum/4, inputnum/7, inputnum/5.0, inputnum/7, inputnum*88]
end
myoutput = div2.(300.0)
IO.puts myoutput
我添加了:a原子,以防Elixir做某种隐式转换。
我对Elixir有点陌生。通过以下方式运行上述代码时,我始终收到以下错误$ elixir putztestzorz.exs
:
putstest
** (ArgumentError) argument error
(stdlib) :io.put_chars(#PID<0.24.0>, :unicode, [[:a, 75.0, 42.857142857142854, 60.0, 42.857142857142854, 2.64e4], 10])
(elixir) lib/code.ex:316: Code.require_file/2
我检查了IO文档,但似乎IO.stream(将io设备转换为IO.Stream,将最后一行更改为IO.stream output
)或IO.write(将给定参数写入给定设备,将最后一行更改为IO.write :stdout, output
)似乎都没有做到这一点。
在这里,我不想只是猜测,而且我似乎不太了解该功能应该做什么。
是否有一个模拟Python的print()
那个只会,好了,工作?
我是否需要投放列表?
我可能在这里错过了一些非常简单的东西,但我不想只是在IO处理功能列表中猜测自己的方式。
(PS文档一直在谈论Process.group_leader
。我尚不打算对此做太多事情,但是有办法将这种情况放在上下文中吗?我一直在想像《星球大战》中的Red Leader。)
问题在于IO.puts
无法处理任意列表,因此ArgumentError
。它可以处理的列表的唯一类型是字符列表或单引号字符串。这就是该函数成功匹配list参数,但后来又在库中深入显示的原因。您基本上有两种选择:
使用IO.inspect
快速调试到标准输出的任何值。
IO.inspect myoutput
将for
理解与Erlang一起使用:io.format
以显式格式化输出,就像printf一样。将:a
可能会引发错误,但如果你删除它,下面应该工作:
for x <- myoutput do
:io.format "~.2f~n", [x]
end
请注意,~.2f
用逗号后的两位数打印值。~n
添加换行符。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句