Количество объектов в Logtalk
У меня есть протокол:
:- protocol(person).
:- public([name/1,
age/1]).
:- end_protocol.
Например, я сделал неизвестное количество объектов с помощью create_object/4
как я могу получить их несколько? Это не проблема, чтобы получить их имена по current_object/1
, но мне нужно целое число!
1 ответ
Решение
Предполагая, что только объекты (т.е. без категорий) реализуют person
протокол, вы можете рассчитать их количество, используя, например,
count(N) :-
findall(1, implements_protocol(_,person), L),
list::length(L, N).
Заменить звонок на implements_protocol /2
с conforms_to_protocol/2
если у вас есть иерархия объектов. Вы также можете обобщить count/1
Предикат, передавая протокол в качестве аргумента.