我可以创建一个包含原子作为参考的列表,以便稍后在我的move
方法中使用它吗?
createLists(X) ->
List = [
listA = lists:seq(1, X),
listB = [],
listC = []
],
List.
然后我创建像T = hello:createLists(10)
。
move(List, A, B) ->
...
如何使用原子获得A
和B
?我对Erlang很陌生,所以答案可能很明显。
move
应该将A
的顶部元素移到B
,但是当我喜欢A
时,我很难通过B
和hello:move(List, ?, ?)
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:nth
和lists:subtract
可以合并为
[Temp1 | NewSource] = Source