Hola a todos.
Vamos a pensar en que tenemos una función que puede recibir tres, dos o un parámetro, y estos son de tipo Float. La función va a realizar una tarea u otra en función de los parámetros recibidos. Y aquí viene la duda. En otros lenguajes, cuando hay parámetros opcionales, los que no reciben valor tienen asignado Null o None. Pero esto no pasa en Gambas. Me quedaría como opción, asignarle el valor de cero, y si este cambia es que ha recibido un parámetro.
Código:
Private Function paseParametros(Optional a As Float = 0, Optional b As Float = 0, Optional c As Float = 0) As Float
'Codigo aqui
End
Hasta aquí funciona. ¿Pero y si uno de los tres parámetros que paso tiene que ser 0 y necesito que ejecute el código? En este caso, esto no me serviria, ya que no es lo mismo cero que Null, ya que el primero es un número y el segundo es valor vacio.
Le he estado dando vueltas y no se me ocurre ningula solución. ¿es una limitación de Gambas? Apuesto a que si.
Un saludo.
¿Por qué la solución te viene a la cabeza después de un rato de haber formulado la pregunta en el foro? Misterios de la vida.
La solución es en vez de usar Float usar Variant, ya que este si admite Null. No es una solución que me guste, ya que al especificar el tipo de parámetro se sabe de antemano el dato a pasar, pero con Variant puede ser cualquier cosa y hasta que se mira el código de la función no se sabe. Algo parecido le ocurre a Python y no pasa nada.
Un saludo.