Tengo algunos problemas para entender el uso del nivel de nivel superior en TCL. Estoy leyendo la programación práctica de Brent Welch en TCL y Tk y hay un ejemplo en el nivel superior que no puedo entender. Aquí está:No se puede entender el comando de nivel de nivel en TCL
proc lassign {valueList args} {
if {[llength $args] == 0} {
error "wrong # args:lassign list varname ?varname...?"
}
if {[llength $valueList] == 0} {
#Ensure one trip through the foreach loop
set valueList [List {}]
}
uplevel 1 [list foreach $args $valueList {break}]
return [lrange $valueList [llength $args] end]
}
¿Alguien me puede explicar por favor? La explicación en el libro no me ayuda lo suficiente :(
En 8.6, logramos encontrar un uso para 'uplevel # 1' con corutinas. Este fue considerado como el primer uso práctico _ever_ para esa forma particular, a pesar de que ha sido legal durante décadas. –
La sintaxis * # * se describe así: "Si * nivel * consiste en # seguido de un número, entonces el número da un número de nivel absoluto". http://www.tcl.tk/man/tcl8.5/TclCmd/uplevel.htm –
@DonalFellows No 'tailcall' la pila superior de 'coroutine'. –