用于Erlang列表的Atom

时间:2017-11-15 21:04:15

标签: erlang

我可以创建一个包含原子作为参考的列表,以便稍后在我的move方法中使用它吗?

createLists(X) ->
  List = [
    listA = lists:seq(1, X),
    listB = [],
    listC = []
  ],
  List.

然后我创建像T = hello:createLists(10)

move(List, A, B) ->
  ...

如何使用原子获得AB?我对Erlang很陌生,所以答案可能很明显。

move应该将A的顶部元素移到B,但是当我喜欢A时,我很难通过Bhello:move(List, ?, ?) 1}}。

1 个答案:

答案 0 :(得分:0)

关于评论中的代码,@ armedor:

1 move(List, a, b, c) ->
2   Source = proplists:get_value(a, List),
3   Dest = proplists:get_value(b, List),
4   Help = proplists:get_value(c, List),
5   Temp1 = [lists:nth(1,Source)],
6   NewDest = [lists:append(Dest,Temp1)],
7   NewSource = lists:subtract(Source,Temp1),
8   List1=[NewSource,NewDest,Help].

Say List被定义为[ {a, lists:seq(1, 3)}, {b, []}, {c, []} ]。 第8行不再是一个支持者,而只是自己的子列表。而是将List1创建为[{a, NewSource}, {b, NewDest}, Help]

你也不需要在第8行分配List1,因为函数正在返回 - 只需将新列表本身作为最后一行,这将是返回值。

您正在进行的lists:nthlists:subtract可以合并为

[Temp1 | NewSource] = Source