8
如何获得一个给定协议中的所有(类)方法的集合在smalltalk/squeak/pharo中?如何获取协议中的所有方法?
我试图收集一组方法返回的值。我不希望将方法存储在实例或类变量中。所以我尽管可以将它们添加到协议中并以这种方式“标记”它们。
谢谢。
如何获得一个给定协议中的所有(类)方法的集合在smalltalk/squeak/pharo中?如何获取协议中的所有方法?
我试图收集一组方法返回的值。我不希望将方法存储在实例或类变量中。所以我尽管可以将它们添加到协议中并以这种方式“标记”它们。
谢谢。
在菲罗,你要寻找的方法是ClassDescription>>allMethodsInCategory:
:
| selectors |
selectors := MyClass allMethodsInCategory: #'protocol name'.
要找到一类端协议的方法,只需发送到元类来代替:
selectors := MyClass class allMethodsInCategory: #'protocol name'.
另一种解决方案不过,您可能需要考虑的是,使用附注标记来标记您的方法。有关该方法的详细信息,请参阅Pragma
类的评论。其优点是其他软件包可以自由添加属于您的组的方法(需要使用*协议),并且该编译指示可以用于存储其他元数据(例如,评估顺序等)。
注:选择器allMethodsInCategory:
已在Pharo 3.0中弃用,后来转而采用allSelectorsInProtocol:
#allMethodsInCategory:也适用于Squeak。 – 2010-06-15 16:13:53
+1有关编译指示的其他信息 – 2012-12-03 16:09:29