2010-10-14 9 views

Odpowiedz

3

jako poprzedzenie elementu jest takie samo jak umieszczenie go w pozycji 1, można korzystać z wbudowaną funkcję erlang:insert_element/3:

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

Funkcja dodano Erlang/OTP R16a.

8

Wygląda na to, że takie rzeczy są odradzane. Jeśli chcesz listę, użyj jednego.

Getting Started with Erlang:

Krotki mają stałą liczbę rzeczy w nich.
+1

Zdecydowanie, jeśli zamiast tego chcesz użyć struktury dynamicznej, użyj list. – rvirding

+0

Moim faktycznym przypadkiem użycia jest to, że mam kilka funkcji, które zwracają "surowe" krotki (np. '{Name, Age}') i wolą zamienić je w krotki z tagami ('{person, Name, Age}'). Nie chcę w ogóle struktury dynamicznej. –

+2

jest dla ciebie głębszą strukturą? jak {osoba, {imię, wiek}}? Więc możesz wywołać funkcję z tym znacznikiem: {person, who (Args)} .. – user425720

6

Jeśli masz skończoną liczbę możliwych długościach krotka, można to zrobić:

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

Można kontynuować ten wzór tak długo, jak trzeba.