Portal    Foro    Buscar    FAQ    Registrarse    Conectarse

Pasar Un Parámetro Concreto De Varios A Una Función.

Pasar Un Parámetro Concreto De Varios A Una Función.
Artículo
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



 
Shell - Ver perfil del usuario Enviar mensaje privado  
Shell [ Sabado, 31 Diciembre 2016, 11:54 ]
 


Pasar Un Parámetro Concreto De Varios A Una Función.
Comentarios
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 usuario Enviar mensaje privado  
tincho [ Sabado, 31 Diciembre 2016, 12:28 ]
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



 
Shell - Ver perfil del usuario Enviar mensaje privado  
Shell [ Domingo, 01 Enero 2017, 10:57 ]
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



 
jguardon - Ver perfil del usuario Enviar mensaje privado  
jguardon [ Domingo, 01 Enero 2017, 16:10 ]
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



 
Shell - Ver perfil del usuario Enviar mensaje privado  
Shell [ Martes, 03 Enero 2017, 19:34 ]
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



 
Shell - Ver perfil del usuario Enviar mensaje privado  
Shell [ Martes, 03 Enero 2017, 20:08 ]
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



 
Shell - Ver perfil del usuario Enviar mensaje privado  
Shell [ Martes, 03 Enero 2017, 22:34 ]
Mostrar mensajes anteriores:    
 
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


 



 

cron