我是Prolog的新手。不能真正了解它是如何运作的。
fillmap([HF|TF],[HG|TG],L,X,Y,Map1):-
...
replace((EX,EY,none),Map1,(EX,EY,HF),Map2),
...
(L1>0-> write("G0"),fillmap(TF,TG,L1,EX,EY,Map2);
write("G=0")).
地图是一个列表。我正在每次递归调用中更改它,我可以通过write func在输出中看到它。但是我希望在我调用它的地方获得更改的Map。但我没有在那里获得更新的地图。怎么做到的?
提前谢谢。
答案 0 :(得分:1)
如果我正确理解了您的问题,您对此谓词计算并打印出来的employee
的值感到满意,并且您只希望能够“传回”或“返回”给来电者。
Prolog中谓词之间的所有数据传递都是通过谓词参数完成的。因此,您需要为Map2
谓词添加额外的参数:
fillmap
当你调用这个谓词时,传入一个新的变量fillmap([HF|TF], [HG|TG], L, X, Y, Map1, Map2):-
... % your code exactly as before
作为最后一个参数,并且在调用之后该变量将被绑定到新的地图。