2015-11-02 12 views

Antwort

12

Sie Listen verketten (nicht Arrays) mit der ++/2 Funktion.

jedoch oft in der funktionalen Programmierung finden Sie eine Liste mit den Nachteilen (|) Betreiber wie so aufbauen:

a = []    # [] 
b = ["foo" | a]  # ["foo"]   ["foo" | []] 
c = ["bar" | b]  # ["bar", "foo"] ["bar" | ["foo" | []]] 

Dies entspricht:

a = []    # [] 
b = ["foo" | a]  # ["foo" | []] 
c = ["bar" | b]  # ["bar" | ["foo" | []]] 

Sie auch diesen Operator gesehen haben im Mustervergleich:

["bar" | tail] = ["bar", "foo"] #tail is now ["foo"] 

Sie werden oft Listen bu Wenn Sie diese Technik verwenden und dann am Ende des Funktionsaufrufs umgekehrt werden, erhalten Sie die Ergebnisse in der gleichen Reihenfolge wie bei der Verwendung der Listenverkettung (z. B. Enum.filter/2). Diese Antwort erklärt es gut Erlang: Can this be done without lists:reverse?

Sie können zusätzlich bei http://elixir-lang.org/getting-started/basic-types.html#lists-or-tuples

+0

Guter Punkt, um sicherzustellen, dass die Person, die die Frage gestellt hat, erkennt, dass er (Indefinitpronomen Sinn) mit Listen und nicht Arrays zu tun hat. –

+1

Zum Zeitpunkt des Verfassens der Frage habe ich das nicht verstanden, aber offensichtlich tue ich es jetzt. Da es ein grundlegender Teil von Elixir ist, müssen andere die gleiche Frage stellen wie ich. Diese Antwort adressiert sowohl die Lösung, als auch, dass nicht wirklich nach Arrays gefragt wird. – steakunderscore

16

Für Verkettung gibt der ++ Operator ist.

So zum Beispiel

iex> [1, 2] ++ [3, 4] 
[1, 2, 3, 4] 
+4

mehr über die Liste Datentyp lesen, können Sie auch mit '--' Teile von Listen entfernen,' [1, 2, 3, 4, 5 ] - [3, 4, 5] 'ergibt '[1, 2]'. –