創建全局變量有我創建如下列表:我如何在序言
tab([(top,left),(top,middle),(top,right),(center,left),(center,middle),
(center,right),(bottom,left),(bottom,middle),(bottom,right)]).
我想創建一個全局變量AllPosition這是一個標籤。所以我做了以下工作:
tab(AllPos).
是這樣嗎?
然後,我不得不按照下面的問題: 我有一個函數,接收標籤中的一對。我想刪除。所以我這樣做:
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)
從列表中刪除元素元素,並創建一個新的列表NewList等於名單,但沒有元素。功能member
和erase
正在工作。
事情是......正如你可能已經注意到我在任何地方都使用AllPos
。這是因爲我想要修改它,以便稍後(在刪除某些元素之後)在另一個函數中使用它。我的邏輯正確嗎?我能否在其他功能中使用修改過的AllPos? 謝謝
請同時查看關於如何[**避免全局變量**]的問題和答案(http://stackoverflow.com/questions/19005042/how-to-avoid-using-assert-and-retractall-in -prolog-to-implement -all-global-or-state)在Prolog中。 – mat