Assegnare un valore a un elemento inesistente
Quarto articolo dedicato al generatore di codice Blockly che condivide le esperienze fatte con questo strumento nel corso delle attività del progetto. Fa seguito a Blockly: istruzioni per l’uso 3.
Un tentativo di prevenire un errore che può essere peggio dell’errore commesso. Si tratta dell’impostazione del valore di un elemento di una lista quando l’elemento non esiste.
Il blocco In list … set # … as …
Il blocco In list … set # … as … è utilizzato per impostare (set) il valore di uno specifico elemento della lista specificata dove list è una lista di oggetti, il parametro # indica la posizione dell’elemento della lista che ci interessa (ricordiamo che in Blockly gli elementi delle liste sono indicizzati a partire da uno) e il parametro as è il nuovo valore dell’elemento specificato.
Ci si aspetta una qualche segnalazione di errore se si cerca di aggiornare il contenuto di un elemento della lista che non esiste. E infatti, in alcuni casi, è proprio così, osservate l’esempio che segue …
Purtroppo però non è sempre così. Se si crea una lista (e, in un certo senso, si comunica a Blockly che la variabile è una collezione di elementi), il generatore di codice aggiunge elementi per permettere di aggiornare il valore di quello desiderato.
Fin qui nulla di male, sapendolo si potrebbe addirittura usare a proprio vantaggio questa possibilità. Si tratterebbe di una pessima idea! Esportando il codice in un qualsiasi linguaggio di programmazione (come, per esempio, Python) l’interprete o il compilatore del linguaggio utilizzato segnala l’impossibilità di eseguire l’operazione e impedisce l’esecuzione del codice.
Come correggere l’errore … si deve fare attenzione alla gestione delle liste cercando di prevedere il possibile accesso a elementi non esistenti.