当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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