咱們知道幾乎每一個編程語言都會有打印輸出的函數,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
這類函數去寫入。函數