gpt4 book ai didi

smalltalk - 如何获取协议(protocol)中的所有方法?

转载 作者:行者123 更新时间:2023-12-04 08:00:09 25 4
gpt4 key购买 nike

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

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

谢谢。

最佳答案

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

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

要在类端协议(protocol)中查找方法,只需发送到元类:
selectors := MyClass class allMethodsInCategory: #'protocol name'.

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

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

关于smalltalk - 如何获取协议(protocol)中的所有方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2990966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com