2016-10-12 151 views
-2

1)什么是这个阵列的:......这是什么?

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

阵列地图?那这是什么?

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

或本:

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

2)如何利用Enum.map创建["Admin": "admin", "User": "user"]

回答

4

["Admin": "admin", "User": "user"]是元组列表,其中键是一个原子。这种列表也被称为“关键字列表”或“关键字”,Elixir有一个模块可以处理这样的列表:Keyword

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

[%{"Admin": "admin"}, %{"User": "user"}]是地图列表。

[%{"Admin": "admin", "User": "user"}]是包含1张地图的列表。

请注意,这些都不是“数组”,而是列表。二郎神有一个名为“阵列”的数据结构,但他们很少使用:http://erlang.org/doc/man/array.html

2)如何使用Enum.map创建["Admin": "admin", "User": "user"]

你需要返回一个2元元组的第一个项目是一个原子,第二个是一个字符串:

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 

或者对这种特殊情况下,你可以使用Enum.into

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

这是值得一提的是,在药剂它有一个专门的模块一起工作:['Keyword'(http://elixir-lang.org/docs/stable/elixir/Keyword.html#content) 。 – mudasobwa

+0

@mudasobwa添加了链接,谢谢! – Dogbert

5

Elixir的iex外壳具有内置的i命令只是这些类型的问题。

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