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

StackOverflow https://stackoverflow.com/questions/2990966

  •  24-10-2019
  •  | 
  •  

Вопрос

Как я могу получить коллекцию всех (классовых) методов в данном протоколе в SmallTalk/Sipeak/Pharo?

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

Спасибо.

Это было полезно?

Решение

В Фаро метод, который вы ищете ClassDescription>>allMethodsInCategory::

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

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

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

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

Нб. Селектор allMethodsInCategory: был устарел в Pharo 3.0, а затем в пользу allSelectorsInProtocol:

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top