list - 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
通过将协议作为参数传递来概括谓词。
推荐阅读
- android - 如何在 MaterialSearchView 的建议中增加文本的大小?
- python - 不覆盖处理程序的路由层次结构
- angular - 错误:无法匹配任何路由。URL 段:'listproducts'
- regex - 正则表达式清理分隔符之前/之后没有文本的文本
- bash - 当出口 1 代码放在某个随机位置时,Bash 陷阱不会运行
- matlab - 用曲线函数定义的颜色图填充曲线下方的区域
- python - 如何使用 Json 发布多对多数据?
- php - 每个类和数组的 PHP
- c++ - 画线不起作用,可能是什么问题?
- android - 仅在 android studio 上不显示在设备上的编辑