2013-02-01 5 views
5

In smalltalk esiste l'ambiente "workspace". Per definizione, "self" punta all'oggetto all'interno del quale si sta eseguendo il metodo corrente. Ma come faccio a capire il "metodo corrente" quando digito frammenti di codice all'interno della finestra dello spazio di lavoro? Non c'è nessun oggetto corrente che esegue alcun metodo o mi sono perso qualcosa. Qualcuno può aiutarti?Nella ricerca del significato di "self"

+0

Se scrivo del testo nella finestra dell'area di lavoro e lo seleziono, immagino che Pharo lo inserisca in un blocco di codice. Quando clicco su "print-it" invia il messaggio "value" a questo frammento. Ora "self" è nel blocco di codice e NON abbiamo alcun indizio su quale metodo di quale oggetto verrà eseguito il blocco. – Sharphawk

risposta

8

È possibile eseguire il debug del codice che si esegue e si vedrà che si finisce per eseguire un metodo temporaneo su un oggetto. Ad esempio in Pharo i DoIti dell'area di lavoro creano un metodo su UndefinedObject (nil). Quindi qui auto si riferirà a zero.

4

Prova questo esperimento: digita "sé" in un'area di lavoro, selezionalo e seleziona "stampa" dal menu di scelta rapida. Questo ti mostrerà a quale oggetto è vincolato.

Nella maggior parte degli Smalltalks, il sé sarà pari a zero.