¿ Alguien Ha Probado La Clase Param ?


Objetivo: ¿ Alguien Ha Probado La Clase Param ?
Hola!.

Pues eso.
Según la ayuda:

Citar:

Esta clase estática se emplea para:
Recibir el valor de los parámetros extra de un método que toma un número variable de argumentos.
Recibir información acerca del nombre del método llamado en el método especial _unknown.


http://gambasdoc.org/help/comp/gb/param?es

Ejemplo, siempre que se pueda.

Saludos

Objetivo: Re: ¿ Alguien Ha Probado La Clase Param ?
Aqui tienes un ejemplo:

Public Sub Form_Open()

Dim TextBox1 As New TextBox(Me)

pruebas("hola", "adios", 20, "pepito", textbox1)

End

Public Sub pruebas(...)

Dim v As Variant

Print "Numero de parametros introducidos:", Param.Count

For Each v In Param
Print "valores: ", v
Next

End


Salida por consola:
Citar:

Numero de parametros introducidos: 5
valores: hola
valores: adios
valores: 20
valores: pepito
valores: (TextBox 0x9b6eb1c)


Como ves la subrutina pruebas tiene un numero indefinido de parametros ("..."), y param recoge los valores que le has pasado.


Nunca la he usado...pero para el tema de constructores (tal como se usa en otros lenguajes de programación) en las clases tiene muchas aplicaciones

Nota:
Me lo apunto para añadirlo al curso de gambas


Añadido al curso de gambas: http://cursogambas.blogspot.com.es/...-numero-de.html

última edición por jsbsan el Miercoles, 16 Abril 2014, 15:31; editado 2 veces
Objetivo: Re: ¿ Alguien Ha Probado La Clase Param ?
Hola Julio.

jsbsan escribió: [Ver mensaje]

Como ves la subrutina pruebas tiene un numero indefinido de parametros ("..."), y param recoge los valores que le has pasado.

Nunca había visto que se podía definir los parámetros indefinidos de esa forma ("...")

La raíz de la pregunta vino por el tema de un paso de x's paramentos a una función de los tipos que fuesen.
Si es un array son de un tipo definido, ejemplo String. Si es una colección puede ser cualquier tipo y si es Variant[]
ídem de lo mismo.

Hice esto:

Public Sub Main()

Dim col_parametros As New Collection

With col_parametros
.Add("Pedro", "parametro1")
.Add(25, "parametro2")
.Add(840.34, "parametro3")
End With

EjemploFuncionMuyLarga(col_parametros)

End

Public Function EjemploFuncionMuyLarga(parametros As Collection)

Dim parametro As String

For Each parametro In parametros
Print parametro
Next

End

Según como sea la cosa se le puede pasar un tipo definido o un objeto. Pudiera haber sido un trabajador, de una edad, un sueldo, etc.
Como el valor de una colección es también del tipo Variant. Pasando una colección vale cualquier tipo.

Me alegro de motivar ideas para el curso. Gracias por el ejemplo!.

Saludos

Objetivo: Re: ¿ Alguien Ha Probado La Clase Param ?
Yo lo he usado un par de veces en constructores tal como comenta jsbsan.

Esto me recuerda a que al principio lo confundí con los parámetros opcionales cuando en realidad no tienen nada que ver. Los opcionales se definen en la declaración de la función y en la llamada se pueden utilizar o no, mientras que los ... no están definidos en ningún sitio.

Otro tema que me llama la atención son los valores por defecto de un parámetro opcional: Si es integer será 0 y si es string será "" y no he encontrado la forma de saber si están presentes o no.

Es decir, si defines


No he encontrado la forma de distinguir entre las llamadas:

Proc()
Proc(0)

En este caso, creo recordar que la clase Param devuelve un error ya que solo sirve para definiciones tipo
Public Sub Proc(...)

Perfil MP  
Objetivo: Re: ¿ Alguien Ha Probado La Clase Param ?
Estuve mirando la wiki de gambas, y encontré la definición.
Parecía tan rara.

http://gambasdoc.org/help/lang/methoddecl?es

Esa forma de parámetros indefinidos, vale tanto como para procedimientos como para funciones.
Veo que algo para los mas nuevos usuarios y los no tanto.
Comprender mejor paréntesis, corchetes en la defunción de la función o procedimientos es importante.

Creo otro post.

Saludos


Página 1 de 1


  
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

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.0969s (PHP: -15% SQL: 115%)
Consultas SQL: 24 - Debug off - GZIP Activado