Как я могу получить набор весь (класс) методы в данном протоколе в smalltalk/squeak/pharo?
Я пытаюсь собрать значения, возвращенные группой методов. Я не хочу должным быть хранить методы в переменной экземпляра или переменной класса. Так я, хотя я мог добавить их к протоколу и таким образом "отметить" их.
Спасибо.
В Pharo вы ищете метод ClassDescription >> allMethodsInCategory:
:
| selectors |
selectors := MyClass allMethodsInCategory: #'protocol name'.
Чтобы найти методы в протоколе на стороне класса, просто отправьте metaclass вместо этого:
selectors := MyClass class allMethodsInCategory: #'protocol name'.
Еще одно решение, которое вы, возможно, захотите рассмотреть, - это использовать прагму для пометки ваших методов вместо этого. См. Комментарий к классу Pragma
для получения подробной информации об этом подходе. Его преимущества заключаются в том, что другие пакеты могут свободно добавлять методы, принадлежащие вашей группе (которые должны быть в протоколе *), и что прагма может использоваться также для хранения других метаданных (например, порядка оценки).
NB. Селектор allMethodsInCategory:
устарел в Pharo 3.0 и более поздних версиях в пользу allSelectorsInProtocol: