我拿到协议了:
:- protocol(person).
:- public([name/1,
age/1]).
:- end_protocol.例如,我使用create_object/4创建了数量未知的对象,如何获取这些对象的数量?通过current_object/1获取它们的名称不是问题,但我需要一个整数!
发布于 2019-01-07 18:05:16
假设只有对象(即没有类别)实现person协议,您可以使用例如计算它们的数量。
count(N) :-
findall(1, implements_protocol(_,person), L),
list::length(L, N).如果您有对象的层次结构,请将对implements_protocol /2的调用替换为conforms_to_protocol/2。您还可以通过将协议作为参数传递来泛化count/1谓词。
https://stackoverflow.com/questions/54067950
复制相似问题