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"
5
A
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.
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