2010-10-14 16 views

Respuesta

3

Como anteponiendo un elemento es el mismo que el de insertarlo en la posición 1, se puede utilizar la función incorporada erlang:insert_element/3:

> erlang:insert_element(1, {a, b}, z). 
{z,a,b} 

Esta función se añadió en Erlang/OTP R16a.

8

Me parece que ese tipo de cosas no se recomienda. Si quieres una lista, usa una.

Getting Started with Erlang:

tuplas tienen un número fijo de cosas en ellos.
+1

Definitivamente, si desea una estructura dinámica use listas en su lugar. – rvirding

+0

Mi caso de uso real es que tengo varias funciones que devuelven tuplas "en bruto" (por ejemplo, '{Nombre, Edad}') y preferiría convertirlas en tuplas etiquetadas ('{persona, Nombre, Edad}'). No quiero una estructura dinámica en absoluto. –

+2

¿la estructura más profunda está bien para usted? como {person, {Name, Age}}? Entonces puedes llamar a la función con esta etiqueta: {person, who (Args)} .. – user425720

6

Si usted tiene un número finito de posibles longitudes de tupla, se puede hacer esto:

prepend(X, {}) -> {X}; 
prepend(X, {A}) -> {X, A}; 
prepend(X, {A, B}) -> {X, A, B}; 
prepend(X, {A, B, C}) -> {X, A, B, C}. 

Puede seguir este patrón durante todo el tiempo que necesita.