當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Elixir StringIO.open用法及代碼示例


Elixir語言中 StringIO.open 相關用法介紹如下。

用法一

open(string, options_or_function \\ [])
@spec open(
  binary(),
  keyword()
) :: {:ok, pid()}
@spec open(binary(), (pid() -> res)) :: {:ok, res} when res: var

創建一個 IO 設備。

string 將是新創建設備的初始輸入。

options_or_function 可以是選項或函數的關鍵字列表。

如果提供了選項,結果將是 {:ok, pid} ,返回創建的 IO 設備。選項 :capture_prompt 設置為 true 時,會導致提示(指定為 IO.get* 函數的參數)包含在設備的輸出中。

如果提供了函數,則將創建設備並將其發送到該函數。當函數返回時,設備將被關閉。最終結果將是一個帶有:ok 的元組和函數的結果。

例子

iex> {:ok, pid} = StringIO.open("foo")
iex> IO.gets(pid, ">")
"foo"
iex> StringIO.contents(pid)
{"", ""}

iex> {:ok, pid} = StringIO.open("foo", capture_prompt: true)
iex> IO.gets(pid, ">")
"foo"
iex> StringIO.contents(pid)
{"", ">"}

iex> StringIO.open("foo", fn pid ->
...>   input = IO.gets(pid, ">")
...>   IO.write(pid, "The input was #{input}")
...>   StringIO.contents(pid)
...> end)
{:ok, {"", "The input was foo"}}

用法二

open(string, options, function)
(從 1.7.0 開始)
@spec open(binary(), keyword(), (pid() -> res)) :: {:ok, res} when res: var

創建一個 IO 設備。

string 將是新創建設備的初始輸入。

設備將被創建並發送到給定的函數。當函數返回時,設備將被關閉。最終結果將是一個帶有:ok 的元組和函數的結果。

選項

  • :capture_prompt - 如果設置為 true ,則在輸出中捕獲提示(指定為 IO.get* 函數的參數)。默認為 false

  • :encoding(自 v1.10.0 起)- IO 設備的編碼。允許的值為 :unicode (默認)和 :latin1

例子

iex> StringIO.open("foo", [], fn pid ->
...>   input = IO.gets(pid, ">")
...>   IO.write(pid, "The input was #{input}")
...>   StringIO.contents(pid)
...> end)
{:ok, {"", "The input was foo"}}

iex> StringIO.open("foo", [capture_prompt: true], fn pid ->
...>   input = IO.gets(pid, ">")
...>   IO.write(pid, "The input was #{input}")
...>   StringIO.contents(pid)
...> end)
{:ok, {"", ">The input was foo"}}

相關用法


注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 StringIO.open(string, options_or_function \\ [])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。