Basic Printing with Elixir - IO.puts error: ** (ArgumentError) argument error (stdlib) :io.put_chars(#PID
Basic Printing with Elixir - IO.puts error: ** (ArgumentError) argument error (stdlib) :io.put_chars(#PID
这是我尝试 运行 用于 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
我检查了the IO documentation,但IO.stream(将io设备转换为IO.Stream,将最后一行更改为IO.stream output
) 或 IO.write(将给定参数写入给定设备,将最后一行更改为 IO.write :stdout, output
)似乎可以解决问题。
在这里我不想继续猜测,我似乎不太明白这个函数应该做什么。
是否有 Python 的 print()
的类似物 工作 ?
我需要投名单吗?
我可能在这里遗漏了一些非常简单的东西,但我不想只是猜测 IO 处理函数列表。
(P.S。文档一直在谈论 Process.group_leader
。我还不打算对此做太多事情,但是有没有办法将其置于此类的上下文中东西?我一直在想象来自星球大战的 Red Leader。)
问题是 IO.puts
无法处理任意列表,因此 ArgumentError
。它可以处理的唯一类型的列表是字符列表或单引号字符串。这就是为什么该函数成功匹配列表参数,但后来在库内部崩溃的原因。你基本上有两个选择:
使用 IO.inspect
快速调试任何值到标准输出。
IO.inspect myoutput
使用 for
理解和 Erlang 的 :io.format
来显式格式化输出,很像 printf。 :a
可能会抛出错误,但如果您删除它,则以下内容应该有效:
for x <- myoutput do
:io.format "~.2f~n", [x]
end
请注意,~.2f
打印逗号后两位数字的值。 ~n
添加换行符。
这是我尝试 运行 用于 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
我检查了the IO documentation,但IO.stream(将io设备转换为IO.Stream,将最后一行更改为IO.stream output
) 或 IO.write(将给定参数写入给定设备,将最后一行更改为 IO.write :stdout, output
)似乎可以解决问题。
在这里我不想继续猜测,我似乎不太明白这个函数应该做什么。
是否有 Python 的 print()
的类似物 工作 ?
我需要投名单吗?
我可能在这里遗漏了一些非常简单的东西,但我不想只是猜测 IO 处理函数列表。
(P.S。文档一直在谈论 Process.group_leader
。我还不打算对此做太多事情,但是有没有办法将其置于此类的上下文中东西?我一直在想象来自星球大战的 Red Leader。)
问题是 IO.puts
无法处理任意列表,因此 ArgumentError
。它可以处理的唯一类型的列表是字符列表或单引号字符串。这就是为什么该函数成功匹配列表参数,但后来在库内部崩溃的原因。你基本上有两个选择:
使用 IO.inspect
快速调试任何值到标准输出。
IO.inspect myoutput
使用 for
理解和 Erlang 的 :io.format
来显式格式化输出,很像 printf。 :a
可能会抛出错误,但如果您删除它,则以下内容应该有效:
for x <- myoutput do
:io.format "~.2f~n", [x]
end
请注意,~.2f
打印逗号后两位数字的值。 ~n
添加换行符。