Looking for erlang Answers? Try Ask4KnowledgeBase
Looking for erlang Keywords? Try Ask4Keywords

Erlang Languageiolistas


Introducción

Mientras que una cadena Erlang es una lista de enteros, un "iolist" es una lista cuyos elementos son enteros, binarios u otros iolists, por ejemplo, ["foo", $b, $a, $r, <<"baz">>] . Ese iolist representa la cadena "foobarbaz" .

Si bien puede convertir un iolist a un binario con iolist_to_binary/1 , a menudo no lo necesita, ya que las funciones de la biblioteca Erlang como el file:write_file/2 y gen_tcp:send/2 aceptan iolists, así como cadenas y archivos binarios.

Sintaxis

  • -type iolist () :: maybe_improper_list (byte () | binary () | iolist (), binary () | []).

Observaciones

¿Qué es un iolist?

Es cualquier binario. O cualquier lista que contenga enteros entre 0 y 255. O cualquier lista anidada arbitrariamente que contenga cualquiera de esas dos cosas.

Artículo original

Utilice listas profundamente anidadas de enteros y binarios para representar datos de IO para evitar copiarlos al concatenar cadenas o binarios.

Son eficientes incluso cuando se combinan grandes cantidades de datos. Por ejemplo, combinar dos binarios de cincuenta kilobytes utilizando la sintaxis binaria <<B1/binary, B2/binary>> normalmente requeriría la reasignación de ambos en un nuevo binario de 100kb. El uso de listas de IO [B1, B2] solo asigna la lista, en este caso tres palabras. Una lista utiliza una palabra y otra palabra por elemento, consulte aquí para obtener más información.

El uso del operador ++ habría creado una lista completamente nueva, en lugar de una lista de dos elementos nuevos. Volver a crear listas para agregar elementos al final puede resultar costoso cuando la lista es larga.

En los casos en que los datos binarios son pequeños, la asignación de listas de E / S puede ser mayor que agregar los binarios. Si los datos binarios pueden ser pequeños o grandes, a menudo es mejor aceptar el costo constante de las listas de IO.

Tenga en cuenta que los binarios agregados se optimizan como se describe aquí . En resumen, un binario puede tener espacio extra oculto asignado. Se llenará si se le agrega otro binario que se ajuste al espacio libre. Esto significa que no todos los apéndices binarios causarán una copia completa de ambos binarios.

iolistas Ejemplos relacionados