2016-10-12 3 views
-2

1) Was ist das Array von:Array von .... was ist das?

["Admin": "admin", "User": "user"] 

Array von Karten? Was ist das dann?

[%{"Admin": "admin"}, %{"User": "user"}] 

oder dies:

[%{"Admin": "admin", "User": "user"}] 

2) Wie ["Admin": "admin", "User": "user"]Enum.map mit schaffen?

Antwort

4

["Admin": "admin", "User": "user"] ist eine Liste von Tupeln, wobei der Schlüssel ein Atom ist. Diese Art von Liste wird auch "Keyword-Liste" oder einfach "Keyword" genannt und Elixir hat ein Modul, um mit solchen Listen zu arbeiten: Keyword.

iex(1)> ["Admin": "admin", "User": "user"] == [{:Admin, "admin"}, {:User, "user"}] 
true 

[%{"Admin": "admin"}, %{"User": "user"}] ist eine Liste der Karten.

[%{"Admin": "admin", "User": "user"}] ist eine Liste mit 1 Karte.

Beachten Sie, dass keine dieser "Arrays", sondern Listen sind. Erlang hat eine Datenstruktur "Array" genannt, aber sie sind selten verwendet: http://erlang.org/doc/man/array.html

2) Wie ["Admin": "admin", "User": "user"] erstellen Enum.map mit?

Sie benötigen ein 2 Element Tupels mit dem ersten Punkt zurück ein Atom und die zweite eine Zeichenfolge sein:

iex(1)> map = %{"Admin": "admin", "User": "user"} 
%{Admin: "admin", User: "user"} 
iex(2)> Enum.map(map, fn {k, v} -> {k, v} end) == ["Admin": "admin", "User": "user"] 
true 

Oder für diesen speziellen Fall können Sie nur verwenden Enum.into:

iex(3)> Enum.into(map, []) == ["Admin": "admin", "User": "user"] 
true 
+0

Es lohnt sich zu erwähnen, dass in Elixir es ein eigenes Modul hat, mit zu arbeiten: [ 'Keyword'] (http://elixir-lang.org/docs/stable/elixir/Keyword.html#content) . – mudasobwa

+0

@mudasobwa hat einen Link hinzugefügt, danke! – Dogbert

5

Elixir iex Shell hat die integrierte i Befehl für genau diese Art von Fragen.

iex(1)> i ["Admin": "admin", "User": "user"] 
Term 
[Admin: "admin", User: "user"] 
Data type 
List 
Description 
This is what is referred to as a "keyword list". A keyword list is a list 
of two-element tuples where the first element of each tuple is an atom. 
Reference modules 
    Keyword, List