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 \\ [])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。