ich eine Liste, die ich wie folgt erstellen:So erstellen Sie globale Variable in Prolog
tab([(top,left),(top,middle),(top,right),(center,left),(center,middle),
(center,right),(bottom,left),(bottom,middle),(bottom,right)]).
Ich möchte eine globale Variable AllPosition schaffen, die ein Register ist. Also habe ich folgendes gemacht:
tab(AllPos).
Ist das richtig?
Dann muss ich Problem verfolgen: Ich habe eine Funktion, die eine der beiden in Registerkarte erhält. Das möchte ich entfernen. Also tat ich dies:
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)).
wo erase(List, Element, NewList)
löscht das Element Element aus Liste und erstellt eine neue Liste NewList gleich Liste aber ohne Element. Beide Funktionen member
und erase
funktionieren. Die Sache ist ... Wie Sie vielleicht bemerkt haben, verwende ich AllPos
überall. Das ist, weil ich möchte, ich möchte es ändern, damit ich es später (nachdem ich einige Elemente daraus entfernt habe), in einer anderen Funktion verwenden kann. Ist meine Logik richtig? Kann ich modifizierte AllPos in einer anderen Funktion verwenden? Danke
Bitte beachten Sie auch die Frage und Antworten zur Vorgehensweise [** globale Variablen vermeiden **] (http://stackoverflow.com/questions/19005042/how-to-avoiding-using-assert-and-retractall-in) -prolog-zu-implementieren-global-oder-state) in Prolog. – mat