繁体   English   中英

如何获得协议中的所有方法?

[英]How can I get all the methods in a Protocol?

如何在smalltalk / squeak / pharo中获取给定协议中所有(类)方法的集合?

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

谢谢。

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

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

要在类端协议中查找方法,只需发送到元类:

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

但是,您可能需要考虑的另一个解决方案是使用pragma标记您的方法。 有关该方法的详细信息,请参阅Pragma类的注释。 它的优点是其他包可以自由添加属于您的组的方法(需要在*协议中),并且该pragma也可以用于存储其他元数据(例如,评估顺序)。

NB。 选择器allMethodsInCategory:已在Pharo 3.0及更高版本中弃用,支持allSelectorsInProtocol:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM