以特定格式添加列表

时间:2018-01-01 13:59:57

标签: elixir phoenix-framework

如果我有这样的清单:

a = [1,2,3]

第二个列表如下:

b = [4,5,6] 

我想要像这样添加这些列表:

[1,2,3, some_atom:[4,5,6]]

所以我想在列表中添加atom

我正在尝试这个:

 a ++ [some_atom: b]

它给我输出:

[1, 2, 3 {:some_atom, [4, 5, 6]}]

任何人都可以建议如果可能的话我该怎么做?

由于

3 个答案:

答案 0 :(得分:1)

你得到的是正确的结果。在Elixir中,Keyword列表只是一个元组列表。所以,

[key: :value, other_key: :other_value]

相同
[{:key, :value}, {:other_key, :other_value}]

事实上,第一种只是第二种语法糖。

答案 1 :(得分:1)

只要您注意到$(".saninput").each(function(){ if ($(this).val() != ""){ var animal = $(this).data("animal"); alert (animal) }; }); 等同于[1,2,3, some_atom: [4,5,6]],您就应该能够自己找出答案。而你原来的方法是正确的。

你可以证明这一点
[1,2,3, {:some_atom, [4,5,6]}]

答案 2 :(得分:1)

它们是相同的,并以相同的方式工作。这是Keyword列出工作的方式。

iex

中试用
iex(1)> [foo: "bar"]
[foo: "bar"]

iex(2)> [{:foo, "bar"}]
[foo: "bar"]

冷静吧?,检查一下。

iex> [foo: "bar", baz: "bar"] == [{:foo, "bar"}, {:baz, "bar"}]
true

你的例子:

iex> [1, 2, 3, some_atom: [4, 5, 6]] == [1, 2, 3, {:some_atom, [4, 5, 6]}]
true

iex