我正在使用此代码:
item(one, 50, 40).
item(two, 80, 70).
item(three, 100, 55).
item(four, 50, 45).
maxMeanStudy:-
findall(M,item(_,M,_),L),
max_member(Max,L),
writeln(Max),!.
要访问 item 的中间值,我必须使用
item(_,M,_)
访问它.如果只有几个条目,这是可以的。但是如果条目很多,很难进入
item(_,_,_,_,_,M,_,_,_,_,_,_,_,_,_,_)
每次。有什么方法可以让我最初将结构声明为
item(Name, Val1, Val2)
然后我可以使用 item(Val1)
访问它?
最佳答案
只需像这样定义一个辅助谓词:
md_(M) :-
item(_, M, _).
这样你只需要写一次(可能)大量的下划线。
使用 SICStus Prolog 4.3.3 的示例查询:
| ?- md_(M).
M = 50 ? ;
M = 80 ? ;
M = 100 ? ;
M = 50 ? ;
no
关于prolog - 在 Prolog 中声明符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38341797/