咱们晓得简直每个编程语言都会有打印输出的函数,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":okiex(4)> StringIO.flush pid"hello\n"

StringIO 过程的状态里,蕴含 input 和 output,input相当于是用户的输出,要应用 IO.read 这类函数去读取。而output相当于程序的输入,应用 IO.write 这类函数去写入。