咱们知道几乎每一个编程语言都会有打印输出的函数,elixir也不例外,经常使用的有 IO.puts
, IO.inspect
, IO.write
等等。 然而你是否知道, 这些函数均可以在增长一个参数在第一位,从而选择不一样的IO设备进行读写。编程
IO设备在 elixir 里面也和普通进程同样,使用消息通讯。elixir 的标准库里自带了一个 StringIO 模块,它使用 GenServer 实现了 IO设备的通讯协议,咱们能够使用这个模块启动一个虚拟 IO 设备。编程语言
iex(1)> {:ok, pid} = StringIO.open("in") {:ok, #PID<0.111.0>} iex(3)> IO.puts pid, "hello" :ok iex(4)> StringIO.flush pid "hello\n"
StringIO 进程的状态里,包含 input 和 output,input至关因而用户的输入,要使用 IO.read
这类函数去读取。而output至关于程序的输出,使用 IO.write
这类函数去写入。函数