Как я могу получить все методы в Протоколе?

Как я могу получить набор весь (класс) методы в данном протоколе в smalltalk/squeak/pharo?

Я пытаюсь собрать значения, возвращенные группой методов. Я не хочу должным быть хранить методы в переменной экземпляра или переменной класса. Так я, хотя я мог добавить их к протоколу и таким образом "отметить" их.

Спасибо.

8
задан jdinunzio 7 June 2010 в 15:48
поделиться

1 ответ

В Pharo вы ищете метод ClassDescription >> allMethodsInCategory: :

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

Чтобы найти методы в протоколе на стороне класса, просто отправьте metaclass вместо этого:

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

Еще одно решение, которое вы, возможно, захотите рассмотреть, - это использовать прагму для пометки ваших методов вместо этого. См. Комментарий к классу Pragma для получения подробной информации об этом подходе. Его преимущества заключаются в том, что другие пакеты могут свободно добавлять методы, принадлежащие вашей группе (которые должны быть в протоколе *), и что прагма может использоваться также для хранения других метаданных (например, порядка оценки).

NB. Селектор allMethodsInCategory: устарел в Pharo 3.0 и более поздних версиях в пользу allSelectorsInProtocol:

7
ответ дан 5 December 2019 в 21:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: