使用Elixir进行基本打印-IO.puts错误:*(ArgumentError)参数错误(stdlib):IO.put_字符(#PID

使用Elixir进行基本打印-IO.puts错误:*(ArgumentError)参数错误(stdlib):IO.put_字符(#PID,io,type-conversion,elixir,Io,Type Conversion,Elixir,以下是我为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 我补充说:一个原子,以防长生不老药正在进行某种隐式铸造 我对Elixir有点陌生。当我通过$Elixir putztest

以下是我为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
我补充说:一个原子,以防长生不老药正在进行某种隐式铸造

我对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
putstest
**(ArgumentError)参数错误
(stdlib):io.put_字符(#PID,:unicode,[:a,75.0,42.857142857142854,60.0,42.857142854,2.64e4],10])
(elixir)lib/code.ex:316:code.require_文件/2
我检查了,但是IO.stream(将IO设备转换为IO.stream,将最后一行更改为
IO.stream输出
)和IO.write(将给定参数写入给定设备,将最后一行更改为
IO.write:stdout,output
)似乎都没有奏效

我不想一直猜测,我似乎不太明白函数应该做什么

有没有类似于Python的
print()
的方法可以很好地工作

我需要投名单还是什么

我可能在这里遗漏了一些非常简单的东西,但我不想只是猜测IO处理函数的列表


(另外,文档中一直在谈论一个
过程。小组组长
。我还不打算对此做太多,但有没有办法把它放在这类事情的背景中?我一直在从《星球大战》中想象。)问题在于
IO.puts
无法处理任意列表,因此出现了
ArgumentError
。它只能处理字符列表或单引号字符串。这就是函数成功匹配列表参数的原因,但后来在库的深处爆炸。基本上有两个a当地人:

使用
IO.inspect
快速调试标准输出的任何值

IO.inspect myoutput
与Erlang的
:io.format
一起使用
进行理解,以明确格式化输出,与printf非常相似。
:a
可能会引发错误,但如果删除它,以下操作应该可以:

for x <- myoutput do
  :io.format "~.2f~n", [x]
end

对于x,您还可以在字符串插值中放入inspect,即IO.puts“这是一个列表:{inspect mylist}”尝试了IO.inspect。它输出以下内容:$elixir putztestzorz.exs putstest[:a,75.0,42.857142857142854,60.0,42.857142857142854,2.64e4]这是否仅用于调试?是的,
IO.inspect
用于调试-一般来说,Elixir无法预测数据的表示方式,
IO.inspect
只会生成一些默认表示形式。如果需要特定的输出格式,则需要编写一些生成数据的代码。