你想要的Prolog功能可能是像myListVars/1这样的动态谓词的断言/撤销,它只会保存你随后可以检索的指定值列表.
例如,如果您X,Y,Z
想要记录三个变量,可以将它们保存到动态事实myListXYZ/1中,并使用如下谓词:
setListXYZ(_,_,_) :-
retract(myListXYZ(_)),
fail.
setListXYZ(X,Y,Z) :-
assert(myListXYZ([X,Y,Z])).
Run Code Online (Sandbox Code Playgroud)
并使用如下谓词检索:
getListXYZ(X,Y,Z) :-
myListXYZ([X,Y,Z]).
Run Code Online (Sandbox Code Playgroud)
这种方法假设你一次只有(最多)myListXYZ/1的一个事实,如果只通过上面的get/set对访问该谓词,这是有保证的.
我经常使用类似的"事实"谓词来存储Prolog程序的测试用例,其中手动输入所需的参数是不方便的.通过添加一个"标记"测试用例的额外参数,可以容纳多个测试用例.
归档时间: |
|
查看次数: |
2674 次 |
最近记录: |