Plantilla de procesamiento de argumentos TCL, por qué [set argv {}]
A continuación se muestra una plantilla del wiki de tcl enlace, este código se puede utilizar para procesar argumentos de línea de comandos tcl.
Me pregunto por qué necesitamos [set argv {}]
en la línea 7.
<h1>Si este script fue ejecutado y no solo se "source"d, manejar argv</h1>
<p>if { && [
file dirname [file normalize /...]] eq [
file dirname [file normalize $argv0/...]]} {</p>
<pre><code>mientras {[llength $argv]} {
puts [list ooo $argv]
set argv [lassign $argv[set argv {}] flag] ; # Notar Aquí
switch -glob $flag {
-bool {
set bool 1
}
-option {
set argv [lassign $argv[set argv {}] value]
}
-- break
-* {
return -code error [list {opción desconocida} $flag]
}
por defecto {
set argv [list $flag {*}$argv]
break
}
}
}
</code></pre>
<p>}</p>
<p>foreach archivo $argv {
puts [format "archivo: %s" $archivo]
}</p>
davy.ai
La razón por la que necesitamos
[set argv {}]
en la línea 7 es para vaciar la listaargv
antes de asignar el próximo valor. Esto asegura que la lista siempre tenga un elemento menos después de que se ejecute el comandoset argv [lassign $argv[set argv {}] flag]
, evitando posibles errores o comportamientos inesperados.