IO

IO 属于 Elixir

1 个练习

关于 IO

处理输入和输出的函数由IO模块提供。

  • IO.puts/2把字符串写入标准输出,并在后面加上换行符。返回:ok。
  • IO.write/2把字符串写入标准输出,但不添加换行符。返回:ok。
  • IO.gets/2从标准输入读取一行。
  • IO.inspect/2可以把任何值写入标准输出,并接受:label这类实用选项。它会原样返回传入的值,很适合调试。

String.Chars协议

如果你传给IO.puts/2一个它无法打印的值,就会看到Protocol.UndefinedError错误。

IO.puts({:ok, 7})
# ** (Protocol.UndefinedError) protocol String.Chars not implemented for {:ok, 7} of type Tuple

遇到这种情况时,你可以改用IO.inspect/2。

用IO.inspect/2调试

IO.inspect/2非常适合调试:它会原样返回自己的实参,能打印任何值,还提供了:label选项。

"HELLO\n"
|> String.trim()
|> IO.inspect(label: "step 1")
|> String.downcase()
|> IO.inspect(label: "step 2")

# > step 1: "HELLO"
# > step 2: "hello"
# => "hello"

IO 设备

所有这些函数的第一个实参都是一个 IO 设备,默认值为:stdio(标准输入/输出)。如果要写入标准错误设备,请改用:stderr。IO 设备也可以是一个进程,例如通过调用File.open/2创建的进程,这样就可以写入文件了。

通过 GitHub 编辑 该链接会在新窗口或标签页中打开

学习 IO