Diciamo che voglio vedere come "copia" è implementato nella classe Dizionario. Attualmente utilizzo il browser di sistema e attraverso manualmente la gerarchia di ereditarietà (dal basso verso l'alto) finché non trovo la classe che implementa il messaggio specificato. Esiste un one-liner per l'area di lavoro, che aprirebbe il browser di sistema nella posizione corretta?Pharo/Squeak - Come posso sfogliare rapidamente l'implementazione di un determinato metodo in una determinata classe?
risposta
(SomeClass whichClassIncludesSelector: #initialize) browse
Questo sfoglia la classe che implementa il messaggio #inizializza.
(SomeClass >> # someSelector) sfogliare
opere e la mia immagine Pharo in.
funziona anche nella mia immagine Pharo. E dal momento che si vuole trovare una classe prima, si può combinare con l'esempio precedente ..
((SomeSubclass whichClassIncludesSelector: #someSelector) >> # someSelector) sfogliare
di andare direttamente al dato metodo.
Personalmente, digito semplicemente #selector in un'area di lavoro, evidenziarlo e premere alt + m per visualizzare tutti gli implementatori del messaggio. Molto più veloce di digitare tutto quel codice.
Se si utilizza OmniBrowser, è possibile utilizzare il menu contestuale Implementors in Gerarchia ... per navigare solo gli implementatori di un selettore nella gerarchia del Dictionary
.
OmniBrowser fornisce anche un Elicottero . Seleziona un'implementazione di #copy
e fai clic sul pulsante Inheritance
nella barra degli strumenti. Ti mostrerà una vista gerarchica di tutti gli implementatori di #copy
.