Domanda

Come posso ottenere una raccolta di tutti i metodi (di classe) in un determinato protocollo in Smalltalk / squittio / Pharo?

Sto cercando di raccogliere i valori restituiti da un gruppo di metodi. Io non voglio avere per memorizzare i metodi in una variabile di istanza o di classe. Così ho pensato che potessi aggiungere un protocollo e in questo modo a "marchio" di loro.

Grazie.

È stato utile?

Soluzione

Nel Pharo, il metodo che stai cercando è ClassDescription>>allMethodsInCategory::

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

Per trovare metodi in un protocollo di classe, semplicemente facendo inviare al metaclasse invece:

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

Un'altra soluzione che si potrebbe prendere in considerazione, però, è quello di utilizzare un pragma per marcare i vostri metodi, invece. Vedere il commento sulla classe Pragma per i dettagli di questo approccio. Presenta i vantaggi che altri pacchetti possono liberamente aggiungere metodi appartenenti al gruppo (che devono essere in un protocollo *), e che il pragma può essere utilizzata per memorizzare altri metadati e (come un ordine di valutazione, per esempio).

NB. Il allMethodsInCategory: di selezione è stato deprecato in Pharo 3.0 e versioni successive a favore di allSelectorsInProtocol:

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top