Gambas: Funciones que devuelven varios tipos de datos
Definición de función:En programación, una función es un grupo de instrucciones con un objetivo en particular y que se ejecuta al ser llamada desde otra función o procedimiento. Una función puede llamarse múltiples veces e incluso llamarse a sí misma (función recurrente).Las funciones pueden recibir datos desde afuera al ser llamadas a través de los parámetros y deben entregar un resultado.Se diferencian de los procedimientos porque estos no devuelven un resultado.
[ FAST ] [ STATIC ] { PUBLIC | PRIVATE } { FUNCTION | PROCEDURE | SUB }
Identifier ( [ [ BYREF ] Parameter AS Datatype [ , ... ] ] [ , ]
[ OPTIONAL [ BYREF ] Optional Parameter AS Datatype [ , ... ] ] [ , ] [ ... ]
) AS Datatype ...
END
Ejemplo de función típica:
public function dividir(a as integer, b as integer) as single 'esta función divide a/b y devuelve el resultado.
return a/b
end
Uso de esta función:
...
dim resultado as single
....
resultado=dividir(1345,2)
print "resultado de la división: ",resultado
...
Funciones que devuelven varios tipos de datos a la vez:
Podemos hacer que en vez de devolver un solo tipo de datos devuelva más información,por ejemplo, si la función ha podido realizar su trabajo correctamente que devuelva TRUE (verdadero) y el resultado, y si no ha podido realizar el trabajo (por ejemplo ha dividido entre cero), devuelva esta información FALSE
Para ello lo que tenemos que decir el que el tipo de dato que devuelva, sea tipo Variant[], que es un array de cualquier tipo de dato, el primer dato puede ser True o False, y el segundo seria el resultado de la operacion
public function dividir(a as integer, b as integer) as variant[]
if b=0 then
return [false,0]'devuelve que no ha podido realizar la operación
else
return [true,a/b] 'operación realizada con exito, devuelve el resultado.
endif
end
Para la lectura de la informacion donde estemos usando esta función se haría del siguiente modo:
....
Dim resultado as variant[]
...
...
resultado=dividir(123,3)
...
if resultado[0]=true then
print "Resultado de la división es...";resultado[1]
end
if resultado[]=false then
print "No he podido dividir, ya que el divisor es 0"
endif
....
Enlaces:
http://gambaswiki.org/wiki/lang/function
http://gambaswiki.org/wiki/lang/methoddecl