Foros del Web » Programación para mayores de 30 ;) » Programación General »

pregunta de tcl/tk

Estas en el tema de pregunta de tcl/tk en el foro de Programación General en Foros del Web. Hola, a todos alguien conoce de Tcl/Tk ? lo que pasa es que hice mi programa por modulos (en linux) , cada modulo está en ...
  #1 (permalink)  
Antiguo 11/08/2003, 10:30
 
Fecha de Ingreso: marzo-2003
Mensajes: 172
Antigüedad: 21 años, 8 meses
Puntos: 0
pregunta de tcl/tk

Hola, a todos
alguien conoce de Tcl/Tk ?
lo que pasa es que hice mi programa por modulos (en linux) , cada modulo está en un archivo .tcl diferente.
cuando hago una llamada a un modulo sin argumentos todo sale bien, por ejemplo:
source archivo.tcl

pero como hago para enviarle un argumento a ese archivo?
intenté asi pero no funciona
source archivo.tcl variable

salu2
__________________
Algun dia se me ocurrirá escribir algo aquí. :pensando:
  #2 (permalink)  
Antiguo 12/08/2003, 23:23
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 21 años, 4 meses
Puntos: 1
Hola,

Es una buena decisión el escribir tu programa en forma modular, aunque creo que la estrategia que estás usando falla debido a un pequeño detalle que quizás estás interpretando mal.

El comando `source' en Tcl sirve para cargar el contenido de un archivo externo (que presumiblemente contiene código Tcl) y ejecutarlo de inmediato, retornando el valor de la última sentencia ejecutada desde el archivo. Eso es todo. Así que `source' no sabe de "argumentos" que puedan pasarse al archivo externo, tal y como te has dado cuenta.

Por lo que alcanzo a interpretar de tu enunciado, tal vez lo que has hecho es escribir en cada uno de tus archivos tcl una serie de comandos secuencialmente, que naturalmente al ser importados desde el llamado a `source', se ejecutan directamente y llevan a cabo su labor de inmediato. En este sentido, no hay forma de pasarle argumentos a una secuencia de comandos libres, a menos que sean parte de un procedimiento.

Cuando usas procedimientos sí resulta natural el proceso de pasar argumentos a tus "módulos" de código.

Consideremos, por ejemplo, que inicialmente contamos con dos archivos: principal.tcl y modulo.tcl, con el siguiente contenido:

principal.tcl
Código:
puts "Este es el programa principal"

source modulo.tcl
modulo.tcl
Código:
set a 3
set doble [expr $a * 2]
puts "El doble de $a es $doble"
En efecto, el archivo `modulo.tcl' representa en nuestro caso una especie de librería con una serie de comandos que son ejecutados cuando se hace el llamado al comando `source':

Código:
$ tclsh principal.tcl
Este es el programa principal
El doble de 3 es 6
Si quisiéramos adaptarlo para que el código de `modulo.tcl' trabajara en función de un valor que se pase como argumento, la forma natural de hacer las cosas es implementar un procedimiento. En ese caso, los archivos podrían modificarse de este modo:

principal.tcl
Código:
puts "Este es el programa principal"

source modulo.tcl

# Ahora existe un procedimiento llamado `doble', al que podemos llamar
# con un argumento
doble 3
modulo.tcl
Código:
proc doble {a} {
    set doble [expr $a * 2]
    puts "El doble de $a es $doble"
}
Espero que te sirva como guía para adaptar tus módulos acordemente.

Un cordial saludo
  #3 (permalink)  
Antiguo 13/08/2003, 16:54
 
Fecha de Ingreso: marzo-2003
Mensajes: 172
Antigüedad: 21 años, 8 meses
Puntos: 0
ya entendi, el comando source es como el include para el C, no se le pueden pasar argumentos, sin embargo carga el archivo para despues utilizar los procedimentos internos en ese archivo al llamarlos como se hace con un procedimiento integrado del tcl.

estuvo muy completa tu respuesta
Gracias Leonard ! ya me funciona el programa

saludos
__________________
Algun dia se me ocurrirá escribir algo aquí. :pensando:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:30.