tcl: (0.00) *EN DESARROLLO* Resumen de uso del lenguaje tcl Cambios: 0.00 8/2/01 empiezo a trastear *POR HACER* ¿En que paquete están las páginas man de tcl? LA ESENCIA DE TCL Entendiendo la esencia de tcl te será muy fácil el resto - En tcl _TODO_ son comandos con parámetros (hasta las condiciones) - Los parámetros van separados por espacios if {...} {...} Se procesan estos comando en este orden: - Agrupación (en parámetros) - Sustitución (variables, comandos) - Ejecución del comando Agrupación: "texto con sustitución de $variables" {texto sin sustituciones} [puts "esto es una sustitución de comando"] Sustitución: ACLARACION: que {...} no haga sustituciones no significa que el comando no pueda hacerlas al evaluar su contenido, por ejemplo if {$var < 5 } {...} si que realiza sustituciones tanto en la condición como en los comandos Namespaces: Un namespace es una colección de comandos y variables encapsulados ¿no es esto la definición de un objeto? (quizas sin herencia...) Se puede usar para librerias y se puede cargar con "source" ::namespace1::namespaceHijo::comandoDelNamespaceHijo Preferences::load ;# Variable load en el namespace Preferences VARIABLES let variable "valor-a-asignar" COMENTARIOS # Comentario comando comando1; comando2 ;# Comentario tras comando EXPR [expr 2*5] ;# Esto evalua matemáticamente y devuelve 10 CONTROL DE FLUJO if {$x == 1} { puts "Es 1" } elseif {$x == 2 } { puts "Es 2" } else {comando} while {$x < 5} {puts "bucle"} foreach n $lista {comandos} ;# para cada elemento $n de la lista catch {comandoQuePuedeDarErrorTerminandoLaEjecucion} ;# captura de errores source archivoTclAProcesar ;# forma de cargar librerias/namespaces PROCESOS proc proceso {arg1 arg2} { global varGlobal1 varGlobal2 set varLocal 12 comandos return $valLocal } # Las variables son locales a menos que se declaren con "global" o se creen # referencias a otras variables en niveles superiores con "upvar" ;# upvar 1 varDe1NivelSuperior varLocalQueApuntaraALaGlobal LISTAS set lista {{uno} {dos} {tres}} set lista [list "uno" "dos" "tres"] set lista [split "uno.dos.tres" "."] [lindex $lista 0] ;# primer elemento de la lista [llength $lista] ;# número de elementos de la lista lappend lista "añadir-esto" "y-esto" ;# añadir elementos a una lista REGEXP regexp {([A-Z]+) +([A-Z]+)} $Origen destSiCoincide destSubGrupo1 destSubGrupo2 regsub "reemplaza" $enCadena "por-esto" yGuardaloAqui ARRAYS array set nombreArray [list {id1} {elemento1} \ {id2} {elemento2} ] set nombreArray(id1) elemento1 ;# inicializo solo un elemento set arrayDe2Dimensiones(idx1,idy1) elementoX1Y1 ;# simulación de array 2D set numElementos [array size nombreArray] set elemento1 $nombreArray(id1) NOTESE: Se pueden crear elementos de un array sobre la marcha MAS AYUDA: man Tcl man grid, namespace y cualquier otro comando de tcl man 3tcl comando #Si el nombre de comando coincide con otra página man