Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Pasar Un Parámetro Concreto De Varios A Una Función.
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Pasar Un Parámetro Concreto De Varios A Una Función. 
 
Buenos días!

Si tuviéramos una función como la de abajo, en la que usa dos parámetros opcionales.
Y yo quisiera pasarle solamente la altura y no la longitud, ¿ Es posible hacer eso ?.

Public Sub Dimensiones(Optional lg As Integer = 20, Optional alt As Integer = 20)
    
  $largo = lg
  $alto = alt

End
 


Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Pasar Un Parámetro Concreto De Varios A Una Función. 
 
Tendrías que pasarlo así:

Dimensiones(,180)
 


Donde pones una "," y luego el valor de la altura que va en el segundo lugar, de manera que el primero queda nulo.

Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Pasar Un Parámetro Concreto De Varios A Una Función. 
 
Tincho:

Citar:

Donde pones una "," y luego el valor de la altura que va en el segundo lugar, de manera que el primero queda nulo.


Vaya, no creía que eso fuese posible   
En serio, no lo digo en broma. Hice algo parecido pero me daba un problema con la coma.
Lo veía lo más normal del mundo, sobre todo cuando son opcionales.

Ayer después de esta pregunta ya no pude acceder a Internet. Así como te lo digo.
Luego lo comento en otro post.

Lo cierto es que tuve que buscar un tema de Python sobre los parámetros de una función.
Llegué a encontrar uno de los vídeos. En el que estaba en inglés se obligaba a usar siempre
todos los parámetros. Hacia uso de parámetros opcionales.

Y no llegué a poder ver el vídeo en español, por otro rollo con Flash.
En el de español y supongo que en el de inglés se hablaba de "parámetros posicionales".
Que hay que tener cuidado con ellos. En el orden como se le envían, cuando haces uso de opcionales a la vez.

Para mi fue la primera vez que veía un error como ese en una función en Python.
A ver si encuentro algo sobre el tema y os lo muestro en este post.

Gracias por la solución al problema. Sabía que era una tontería, aunque puede que no sea tan tonto el problema.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Pasar Un Parámetro Concreto De Varios A Una Función. 
 
Public Sub Dimensiones(Optional lg As Integer = 20, Optional alt As Integer = 20)
    
  $largo = lg
  $alto = alt

End
 


Creo que la forma correcta es asignando el valor al argumento de la función o rutina:

Dimensiones(alt=52)
o
Dimensiones(lg=23, alt=alto)

Para más información, ver esta página del manual:

http://gambaswiki.org/wiki/lang/methoddecl?l=es

Saludos

Ahora no tengo gambas a mano, pero eso debería funcionar
 




===================
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"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Pasar Un Parámetro Concreto De Varios A Una Función. 
 
Jesús:

Citar:

Creo que la forma correcta es asignando el valor al argumento de la función o rutina:

Dimensiones(alt=52)
o
Dimensiones(lg=23, alt=alto)


Ese método no me ha funcionado.  Se supone con Dimensiones(alt = 52), usas el nombre del argumento
y le asignas un valor. Cuando haces eso en la llamada a la función, si observas la imagen, parece
que está esperando el primer argumento de la función:

 ejemplopasoparametro

Si ejecutas de esa forma. Dará error de identificador desconocido.
Cuando he visto tal como lo has escrito, me ha recordado a Python.

Por ahora no he encontrado una mejor solución que la de Tincho. No he llegado a ver algo similar a lo que comentabas en la ayuda.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Pasar Un Parámetro Concreto De Varios A Una Función. 
 
Ahora otro problema, intentar usar la solución de las comas al llamar al constructor.

Clase Botón
Inherits Button

Private obs1 As Observer

Public Sub _new(Optional ancho As Integer = 100, Optional alto As Integer = 40)
  
  obs1 = New Observer(Me) As "EjemploBoton"  
  With Me
    .Width = ancho
    .Height = alto      
    .x = (Me.Parent.Width - ancho) / 2    
    .y = (Me.Parent.Height - alto) / 2
    .Text = "Click!"
  End With
  
End

Public Sub EjemploBoton_Click()
  
  Print "Click!"
  
End

End
 


Main:

Public Sub Form_Open()

  Dim objeto As Boton
  
  objeto = New Boton(Me,, 50)

End
 


Resultado:

 errorcoma

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Pasar Un Parámetro Concreto De Varios A Una Función. 
 
La forma del paso de parámetros que nos mostró Jesús, es del todo correcta, pero en gambas no encontré la forma.
Es el paso de argumentos por nombre. Estamos acostumbrados a hacerlo por posición.

Ejemplo: Esto es en un Visual basic 6 que tengo emulado.

 ejemploconvb6

La salida de la ventana inmediato fue:

 ventanainmediato

También en Python encontré la forma de hacerlo. ( Sin usar formateo )

#!/usr/bin/python3

def datos(nombre = 'Luis', edad = 40):
    print ('Me llamo ' + nombre + ' y tengo ' + str(edad)  + ' años')
    
def main():
    datos(edad = '59')

if __name__=='__main__': main()
 


La salida de la consola mostraría:

Citar:

Me llamo Luis y tengo 59 años


Como podéis ver. El orden en el que se le pasa, en este caso es solo un parámetro.
Lo interesante de esta forma de paso de argumentos por nombres es que no estamos obligados a pasarlos
en una forma obligada, siempre que le indiquemos el argumento y su valor.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Rellenar Varios Combos De Varios Formulari... CanihoJR General 9 Martes, 12 Junio 2012, 21:44 Ver último mensaje
luisrel
No hay nuevos mensajes ¿ Podemos En Basic Pasar Una Función Com... Shell General 10 Martes, 14 Julio 2015, 13:45 Ver último mensaje
Shell
No hay nuevos mensajes Dias De Un Numero De Semana En Concreto desoljor Aplicaciones/Fragmentos de Código 19 Lunes, 04 Enero 2016, 15:15 Ver último mensaje
Alaplancha
No hay nuevos mensajes ¿ Es Posible Pasar Una Función Como Par... Shell General 13 Domingo, 27 Marzo 2016, 19:38 Ver último mensaje
Shell
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron