|
Página 1 de 1
|
¿ Es Posible En Gambas Mapear Funciones En Una Colección ?
Autor |
Mensaje |
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
¿ Es Posible En Gambas Mapear Funciones En Una Colección ?
Hola!.
Antes de nada tomemos el termino función tanto como para función como para procedimiento. Ok ?.
Fijaros en este ejemplo: (Lo se, he vuelto a usar un proyecto de formulario..jeje)
Si el procedimiento o función f, hubiera sido un procedimiento (al no devolver valor, daría error). Función que no tiene parámetros, en este caso.
Pero devuelve un tipo cadena. En cambio al ser una función que devuelve valor y usar el comando Print, nos muestra el valor que devuelve la función f.
Hemos añadido el nombre de la función a la colección, el valor es el nombre de la función y su clave es 0.
No puedo ejecutar a secas en Gambas: (Si hubiera sido un procedimiento en vez de una función que devuelve valor.
d[0]
Tampoco puedo añadir....
d[0]()
(lo se, esto es de Python).
Es algo que estoy viendo en un vídeo del curso de Python y estaba viendo si podíamos implementar eso para Gambas
Añado, como veis no he podido poner f como valor, si no f() como función o procedimiento en la colección.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
última edición por Shell el Lunes, 25 Noviembre 2013, 19:54; editado 1 vez
|
#1 Lunes, 25 Noviembre 2013, 19:52 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: ¿ Es Posible En Gambas Mapear Funciones En Una Colección ?
Este es un ejemplo parecido pero en Python:
Ademas, añadimos el parámetro nombre. Como lo hice en gambas,
para que veáis la diferencia con respecto a Python.
def saludar(nombre):
print "Hola "+nombre
# Diccionario, en gambas hemos usado colección
d = {0:saludar}
# Llamamos a la función y ademas le pasamos un parámetro.
d[0]("Juan")
Cuando termine de bajar la actualización de gambas lo pruebo con parámetro en Gambas.
Aja...complicado, parece ser.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#2 Lunes, 25 Noviembre 2013, 20:29 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: ¿ Es Posible En Gambas Mapear Funciones En Una Colección ?
"Mapear funciones" no es un término que me suene de nada.
Lo que en tu código pretendes es meter la llamada a una función dentro de una colección. Eso no es posible, que yo sepa. El contenido de la colección ha de ser conocido en tiempo de compilación. En ejecución ya debe estar todo resuelto (hasta donde yo se) por tanto no es posible hacer eso directamente.
Si haces esto
Verás que imprime "Pepe" las dos veces, a pesar de cambiar el valor de la variable.
|
#3 Martes, 26 Noviembre 2013, 00:13 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: ¿ Es Posible En Gambas Mapear Funciones En Una Colección ?
"Mapear funciones" no es un término que me suene de nada.
Esta es la frase que muestra parte del tutorial donde lo explicaba. En inglés, claro.
Citar:
# Illustration of a dictionary mapping values to functions
La colección de gambas tiene hasta cierto parecido al diccionario.
Es mapear números a funciones. Un índice.
shordi escribió: Verás que imprime "Pepe" las dos veces, a pesar de cambiar el valor de la variable.
Si, eso no puede cambiar. Solo la primera vez y mucho es.
Así que lo he hecho de esta forma:
Aquí la cosa es que le tienes que pasar como parámetro un array. Habría que ver como pasar otro nombre, pues como no sea creando un array de arrays..
U otra variable.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
última edición por Shell el Martes, 26 Noviembre 2013, 11:51; editado 3 veces
|
#4 Martes, 26 Noviembre 2013, 11:45 |
|
|
shordi
Analista Programador
Registrado: Septiembre 2009
Mensajes: 4982
Edad: 64 Ubicación: Albacete
|
Re: ¿ Es Posible En Gambas Mapear Funciones En Una Colección ?
Bueno... vale. Pero no deja de ser utilizar algo para un uso que no está pensado.
Esos retorcimientos, a veces funciona de maravilla, pero cuando menos, son engorrosos.
Hay otras formas de pelar el mismo gato mucho más simples y adecuadas al lenguaje.
Opino.
|
#5 Martes, 26 Noviembre 2013, 13:01 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: ¿ Es Posible En Gambas Mapear Funciones En Una Colección ?
Si, comprendo. Es cuestión de buscar un camino alternativo.
Al final he visto como solucionar el problema. He retocado el código de arriba.
Desde luego hay que usar lo mas adecuado para cada lenguaje.
En este caso, podíamos tener una lista larga de funciones y en el array nombredefunciones, ver rápidamente los nombres de todas estas
y no tener que estar navegando por el código. Otra cosa es los parámetros que tengan que tener.
Hay que buscar la forma mas cómoda de hacer algo. También la de hacerla mas legible para cualquiera que quiera interpretar nuestro código.
Podemos reducir el código hasta cierto nivel y solo el que tenga una experiencia mayor podrá hacerlo mejor. No lo vemos a la primera y
a veces ni nos preocupamos.
Hay otras que hacemos lineas de código enorme. Nuestro código llega a ser realmente complicado de entender.
Hay que buscar remedios e ir mejorando, etc.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#6 Martes, 26 Noviembre 2013, 14:24 |
|
|
jguardon
Administrador
Registrado: Septiembre 2009
Mensajes: 2708
Edad: 57 Ubicación: Granada
|
Re: ¿ Es Posible En Gambas Mapear Funciones En Una Colección ?
Interesante. Hay un ejemplo de uso práctico de Object.Call() en el ejemplo que viene con gambas "Paint".
http://gambasdoc.org/help/comp/gb/object/call?es&v3
Saludos
=================== Jesús Guardón
Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".
"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
|
#7 Martes, 26 Noviembre 2013, 15:49 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: ¿ Es Posible En Gambas Mapear Funciones En Una Colección ?
Algo mejor. Recordando que no es una colección, es un array.
Y aun se puede rizar un poco mas la función de llamada:
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#8 Jueves, 28 Noviembre 2013, 13:11 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 1
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|