Logtalk 中的对象数
Number of objects in Logtalk
我有协议:
:- protocol(person).
:- public([name/1,
age/1]).
:- end_protocol.
例如,我使用 create_object/4
制作了未知数量的对象,我怎样才能得到它们的数量?通过current_object/1
获取他们的名字不是问题,但我需要一个整数!
假设只有对象(即没有类别)实现 person
协议,您可以使用
来计算它们的数量
count(N) :-
findall(1, implements_protocol(_,person), L),
list::length(L, N).
如果您有对象层次结构,请将对 implements_protocol /2
的调用替换为 conforms_to_protocol/2
。您还可以通过将协议作为参数传递来概括 count/1
谓词。
我有协议:
:- protocol(person).
:- public([name/1,
age/1]).
:- end_protocol.
例如,我使用 create_object/4
制作了未知数量的对象,我怎样才能得到它们的数量?通过current_object/1
获取他们的名字不是问题,但我需要一个整数!
假设只有对象(即没有类别)实现 person
协议,您可以使用
count(N) :-
findall(1, implements_protocol(_,person), L),
list::length(L, N).
如果您有对象层次结构,请将对 implements_protocol /2
的调用替换为 conforms_to_protocol/2
。您还可以通过将协议作为参数传递来概括 count/1
谓词。