2010-02-25 18 views
5

È un requisito di buon codice TCL? Cosa succederebbe se non usassimo la parola chiave "unset" in uno script? Di tutti gli effetti negativi che dovrei sapere?abbiamo bisogno di "unset" variabili in TCL?

Sto ereditando del codice legacy e gli errori che si verificano a causa di variabili non esistenti "non impostate" mi stanno facendo impazzire!

risposta

8

È possibile determinare se esiste una variabile prima di utilizzarla, utilizzando il comando info exists. Assicurati che, se non stai utilizzando unset, non devi alterare la logica del programma da qualche altra parte.

Non esiste una ragione specifica per Tcl per unset una variabile, ovvero, non causerà una perdita di memoria o esaurirà maniglie variabili o qualcosa di pazzo del genere. L'utilizzo di unset può essere una pratica di programmazione difensiva, poiché impedisce l'uso futuro di una variabile dopo che non è più rilevante. Senza saperne di più sul codice esatto con cui stai lavorando, è difficile fornire informazioni più dettagliate.

+0

Nessuna perdita di memoria o come. Proprio quello che speravo di sentire! Ora posso andare a mettere al bando quegli idioti "unset" in tutto il codice. Sì, guardandolo ora, sembra più di programmazione difensiva anche per me. Eppure, nel mio caso, sembra un po '"troppo" di difesa. "info exists" è nuovo per me - grazie! – chronodekar

2

In aggiunta alle altre risposte, se la versione di Tcl è abbastanza nuovo, è anche possibile utilizzare:

unset -nocomplain foo

che ti foo impostata se esiste, ma non si lamenterà se doesn 't.

Jeff

0

per nota come non mi sembra in grado di commentare la "info esiste" di cui sopra;

Io uso questa forma spesso ..

if { [info exists pie] && [$pie == "ThisIsWhatIWantInPie"]} { 
    puts "I found what I wanted in pie." 
} else { 
    puts "Pie did not exist; but I still did not error,TCL's evaluation \ 
      will see the conditional failed on the [info exists] and not \ 
      continue onto the comparison." 
} 
1

dipende dal sistema stats può dare "in grado di allocare i byte" questione, come e quando lo script è la memorizzazione di dati enormi in variabili e array. si interromperà una volta che la cache o la RAM sono piene dicendo "impossibile allocare i byte XXXXXXXX".

Assicurarsi che non stanno memorizzando che molti dati in variabili, altrimenti fanno impostata una volta che l'uso è finita per i rispettivi set di dati (variabili)

Problemi correlati