Ate quantos valores um funcao pode retornar??

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

rangelssilva
Usuário Nível 1
Usuário Nível 1
Mensagens: 48
Registrado em: 27 Jul 2007 15:24
Localização: São Paulo - SP

Ate quantos valores um funcao pode retornar??

Mensagem 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
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Ate quantos valores um funcao pode retornar??

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
yugi386
Usuário Nível 2
Usuário Nível 2
Mensagens: 82
Registrado em: 24 Jul 2008 10:36
Localização: Minas Gerais

Re: Ate quantos valores um funcao pode retornar??

Mensagem 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í!
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Ate quantos valores um funcao pode retornar??

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder