我有一个列表,创建方式如下:
tab([(top,left),(top,middle),(top,right),(center,left),(center,middle),
(center,right),(bottom,left),(bottom,middle),(bottom,right)]).
我希望创建一个名为AllPosition的全局变量,它是一个表格。因此我执行了以下操作:
tab(AllPos).
这样对吗?
然后我面临一个问题: 我有一个函数,它接收tab中的一对元素。我希望删除其中一个元素,所以我做了这个操作:
place(Line, Column, Tab) :-
AllPos \== [_,_] /*while AllPos isn't empty - not sur if this is done this way*/ -> (member((Line,Column), AllPos) -> (erase(AllPos, (Line,Column), AllPos)).
其中erase(List, Element, NewList)
是从列表List中删除元素Element并创建一个新的列表NewList,它与不包含Element的List相同。这两个函数member
和erase
都可以使用。
问题是...你可能已经注意到我到处使用AllPos
。那是因为我想要这样做,我想修改它以便稍后在另一个函数中使用(在从中删除一些元素后)。我的逻辑正确吗?我能在另一个函数中使用修改后的AllPos吗?
谢谢