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 StringIO.flush用法及代碼示例
- Elixir StringIO.contents用法及代碼示例
- Elixir StringIO.close用法及代碼示例
- Elixir StringIO用法及代碼示例
- Elixir String.contains?用法及代碼示例
- Elixir String.reverse用法及代碼示例
- Elixir String.to_integer用法及代碼示例
- Elixir String.pad_trailing用法及代碼示例
- Elixir String.split_at用法及代碼示例
- Elixir String.valid?用法及代碼示例
- Elixir String.replace_prefix用法及代碼示例
- Elixir String.printable?用法及代碼示例
- Elixir String.replace_trailing用法及代碼示例
- Elixir String.trim_leading用法及代碼示例
- Elixir String.length用法及代碼示例
- Elixir String.replace_suffix用法及代碼示例
- Elixir String.first用法及代碼示例
- Elixir String.upcase用法及代碼示例
- Elixir String.graphemes用法及代碼示例
- Elixir String.at用法及代碼示例
- Elixir String.replace用法及代碼示例
- Elixir String.next_grapheme用法及代碼示例
- Elixir String.next_codepoint用法及代碼示例
- Elixir String.myers_difference用法及代碼示例
- Elixir String.trim_trailing用法及代碼示例
注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 StringIO.open(string, options_or_function \\ [])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。