Página 1 de 1

Ate quantos valores um funcao pode retornar??

Enviado: 28 Jul 2009 18:52
por rangelssilva
Boa Noite, Galera....


Gostaria de saber ate quantos valores un funcao pode retornar.????
Caso eu faca uma funcao que retorne um vetor e uma variavel tem como eu utilizar essa funcao mas utilizar somente um valor retornado para comparacao...

Ex:

Function blablala()

Local X:=0,Vetpos:={}

Return(x,vet pos)

Gostaria de utilizar a funcao acima e fazen uma comparacao utilizando apenas o x por exemplo.

If Funciton blablabla()=0


endif

ou seja o vetor nao usaria para comparacao. Somente me interessa o X?

COmo poderia escrever isto...????existe sintaxe....

Espero que haja solucao, pois estou montando umas funcoes.....
:)Pos

Re: Ate quantos valores um funcao pode retornar??

Enviado: 28 Jul 2009 19:00
por Maligno
Uma função só pode retornar um valor. Sempre. Aliás, não conheço linguagem que permita isso. Mas existem alternativas. Você tanto pode retornar uma matriz, como fazer uma atribuição por referência. Supondo que você queira atribuir valores a duas variáveis. Você pode passá-las por referência à função e, nesta, alterar seus valores. As mudanças serão permanentes. Daí, basta testar os valores na função chamadora.

Re: Ate quantos valores um funcao pode retornar??

Enviado: 28 Jul 2009 20:20
por yugi386
Conforme disse Maligno a função retorna sempre um único valor. Vc pode utilizar a idéia de retornar uma matriz se for retornar dois ou mais números por exemplo. Pode utilizar parâmetros por referência e assim modificar o conteúdo delas sem a necessidade de retornar nada.
Eu utilizei uma solução alternativa numa função que devia retornar um número e uma string, sem no entanto modificar os seus valores iniciais (assim não pude usar parâmetros por referência).
Usei o seguinte artifício:

Código: Selecionar todos

[b]Func exemplo(Num1,string2)[/b]
Local Retorno:=space(0)

...

Num2 = Num1 * 2
string2 = string2 + "chapeu"

Retorno := strzero(Num2,10) + String2

[b]Return(Retorno)[/b]
NOTA: Neste caso só funcionou por que eu sabia que o parâmetro Num2 jamais excederia 10 dígitos.

Para pegar o valor do retorno da função faça assim:

Código: Selecionar todos

temp := exemplo(Num1,string2)
Ret1 := Val(Substr(temp,1,10))
Ret2 := Substr(temp,11)
Mas não utilize este recurso inadivertidamente porque na verdade trata-se de uma autentica gambiarra.

É isso aí!

Re: Ate quantos valores um funcao pode retornar??

Enviado: 28 Jul 2009 20:38
por Maligno
É gambiarra realmente. Resolve o problema. Mas não é o ideal, claro. Seria melhor usar variáveis temporárias passadas por referência. Ou uma matriz.