如何在SmallTalk/Squeak/Pharo中给定协议中的所有(类)方法的集合?

我正在尝试收集一组方法返回的值。我不想将方法存储在实例或类变量中。因此,尽管我可以将它们添加到协议中,并以这种方式“标记”它们。

谢谢。

有帮助吗?

解决方案

在Pharo中,您要寻找的方法是 ClassDescription>>allMethodsInCategory::

| selectors |
selectors := MyClass allMethodsInCategory: #'protocol name'.

要在集体端协议中找到方法,只需发送到Metaclass:

selectors := MyClass class allMethodsInCategory: #'protocol name'.

不过,您可能要考虑的另一个解决方案是使用Pragma来标记您的方法。查看有关 Pragma 课堂以获取该方法的详细信息。它具有以下优点:其他软件包可以自由添加属于您的组的方法(需要使用 *协议),并且可以使用Pragma来存储其他元数据(例如,例如评估顺序)。

NB。 选择器 allMethodsInCategory: 已在Pharo 3.0及以后被弃用 allSelectorsInProtocol:

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top