Ecco cosa succede quando provo a entrare nelle insidie che hai menzionato in Squeak e Dolphin, due implementazioni del linguaggio dinamico Smalltalk 80.
È possibile assegnare ad una variabile con un nome casuale che non è mai leggere
Il linguaggio Smalltalk richiede variabili TEMP e istanze da dichiarare. Se provo a compilare un metodo contenente una variabile non definita, ottengo un errore in fase di compilazione.
| anArray |
anArrray := Array with: 2 with: 1. "Unknown variable anArrray"
creazione di variabili dinamicamente non è qualcosa linguaggi dinamici devono consentire. C'è una differenza tra dichiarazioni senza tipo e nessuna dichiarazione.
È possibile chiamare i metodi che non esistono
La questione compilatore un avviso se si utilizza un selettore (metodo vale a dire nome), che è del tutto sconosciuta.
Il compilatore non si preoccuperà se chiamo il metodo paint
su un array perché c'è un'altra classe nel sistema che implementa paint
. Questo errore verrà rilevato solo in fase di esecuzione.
Se tuttavia chiamo il metodo sortt
(mentre intendo chiamare sort
) il compilatore genera un avviso. Durante lo sviluppo dall'alto verso il basso è possibile procedere con questi avvertimenti.
| anArray |
anArray := Array with: 2 with: 1.
anArray paint. "Runtime error. You can't paint an array but perhaps a Shape"
anArray sortt. "Compile-time warning"
È possibile fare riferimento a classi che non esiste
Questo non è consentito. Anche se in Squeak puoi creare rapidamente una nuova classe dalla finestra di dialogo degli errori, se necessario.
fonte
2010-03-11 23:04:05
Si consiglia di elaborare su che tipo di errore di battitura, in particolare dove si verifica. – NomeN
Intendevi - fino al tempo di esecuzione? –
Sembra che tu consideri "amichevole" come "non si lamenta quando faccio un refuso finché non è necessario eseguirlo". Penserei che la definizione opposta sia migliore. Un interprete "amichevole" è uno che analizza il codice e cerca errori di battitura e mi dà un errore prima dell'esecuzione effettiva. – shoosh