2010-07-30 19 views
7

Ho codice quiCome mettere Commenti ai blocchi in TCL

proc checkPrime {no} { 
    set i 1 
    set count 0 
    while {$i < $no} { 
     if {{$no%$i} eq 0} { 
      incr count 
     } 
     if {$count eq 2} { 
      puts "the number is prime number" 
      return 
     } 
     incr i 
    } 
} 

voglio mettere l'intera procedura in un singolo commento, non voglio mettere ogni riga con #, c'è qualche possibilità come in Java/* .. */con tutto il codice commentato, come quello in tcl. E voglio anche una parte del testo sarà messo singolo commento

+0

Un paio di errori nel codice: usa 'eq' per l'uguaglianza di stringa,' == 'per l'uguaglianza numerica; 'if {{$ no% $ i} eq 0}' dovrebbe essere 'if {($ no% $ i) == 0}' –

+0

Un'altra implementazione per verificare se un numero è primo è su rosettacode.org: http://rosettacode.org/wiki/Primality_by_trial_division#Tcl –

risposta

17

A parte lo if {0} .. che è idiomatico (e che la maggior parte dei programmatori tcl riconosce) è possibile utilizzare qualsiasi altro costrutto e inserire le cose che si desidera commentare in coppie di offerte. Il vero meccanismo che impedisce l'esecuzione qui è che le cose racchiuse tra virgolette non vengono sostituite.

Ecco alcuni dei miei preferiti. Mi piacciono perché sono auto-documentazione:

set COMMENTED_OUT { 

    commented out stuff 

} 

e

proc COMMENTED_OUT {} { 

    commented out stuff... 

} 

tendo a preferire il proc perché il blocco di testo commentata è in realtà un blocco di codice.

noti che TCL non compila corpi proc fino prima esecuzione in modo commentando l'ausilio di un proc è a buon mercato come set e if {0} ...

+6

ovviamente, questo non funzionerà se le cose che stai commentando sono buggy e hanno parentesi graffe sbilanciate. –

11

Questa domanda non è chiara. Intendi commentare un blocco di codice? Beh ci sono due modi: prefisso ogni riga con # uso qualcosa lungo

if { 0 } { 
    a section 
    of 
    "commented" code 
} 

In caso contrario si prega di riformulare questa domanda di mostrarci un esempio di quello che vuoi dire.

+2

Per essere chiari, Tcl non analizza il corpo * del tutto * nel caso in cui funzioni che non può mai essere eseguito (a parte il controllo del bilanciamento delle parentesi graffe). –

+3

è necessario ricordare che il trucco "se 0" non funzionerà se le linee di codice da escludere hanno parentesi non bilanciate. –

Problemi correlati