StringIO
Управляет процессом устройства ввода-вывода, обернутого вокруг строки.
Устройство ввода-вывода StringIO может быть передано в качестве «устройства» большинству функций в модуле IO.
Примеры
iex> {:ok, pid} = StringIO.open("foo")
iex> IO.read(pid, 2)
"fo" Обзор
Функции
- child_spec(init_arg)
Возвращает спецификацию для запуска этого модуля под надзором.
- close(pid)
Останавливает устройство ввода-вывода и возвращает оставшиеся буферы ввода-вывода.
- contents(pid)
Возвращает текущие буферы ввода-вывода для данного устройства ввода-вывода.
- flush(pid)
Очищает буфер вывода и возвращает его текущее содержимое.
- open(string, options_or_function \\ [])
Создает устройство ввода-вывода.
- open(string, options, function)
Создает устройство ввода-вывода.
Функции
child_spec(init_arg)
Возвращает спецификацию для запуска этого модуля под надзором.
См. Supervisor.
close(pid)
Спецификации
close(pid()) :: {:ok, {binary(), binary()}} Останавливает устройство ввода-вывода и возвращает оставшиеся буферы ввода-вывода.
Примеры
iex> {:ok, pid} = StringIO.open("in")
iex> IO.write(pid, "out")
iex> StringIO.close(pid)
{:ok, {"in", "out"}} contents(pid)
Спецификации
contents(pid()) :: {binary(), binary()} Возвращает текущие буферы ввода-вывода для данного устройства ввода-вывода.
Примеры
iex> {:ok, pid} = StringIO.open("in")
iex> IO.write(pid, "out")
iex> StringIO.contents(pid)
{"in", "out"} flush(pid)
Спецификации
flush(pid()) :: binary()
Очищает буфер вывода и возвращает его текущее содержимое.
Примеры
iex> {:ok, pid} = StringIO.open("in")
iex> IO.write(pid, "out")
iex> StringIO.flush(pid)
"out"
iex> StringIO.contents(pid)
{"in", ""} open(string, options_or_function \\ [])
Спецификации
open(binary(), keyword()) :: {:ok, pid()} open(binary(), (pid() -> res)) :: {:ok, res} when res: var Создает устройство ввода-вывода.
string будет начальным вводом нового устройства.
options_or_function может быть списком ключевых слов опций или функцией.
Если предоставлены опции, результатом будет {:ok, pid}, возвращая созданное устройство ввода-вывода. Опция :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)
Спецификации
open(binary(), keyword(), (pid() -> res)) :: {:ok, res} when res: var Создает устройство ввода-вывода.
string будет начальным вводом нового устройства.
Если опция :capture_prompt установлена в true, запросы (указанные в качестве аргументов функциям IO.get*) будут захвачены в выводе.
Устройство будет создано и передано в заданную функцию. При возвращении функции устройство будет закрыто. Конечный результат будет кортежем с :ok и результатом функции.
Примеры
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"}}
© 2012 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.9.4/StringIO.html