Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

leandrodz

Parametros por referencia

Recommended Posts

1- Ao chamar uma SUB eh possível que o valor do parametro passado seja alterado?OBS1: sem que seja usado o Function para o retorno do valorOBS2: se houver uma forma de resolver em JavaScript, tb serve.Ex (o que eu kero q aconteça):' valor inicial de "a"a = 5' chama a função "Inc" que ira incrementar "a" em "1"Inc(a)' função de incrementoSub Inc(val) val = val + 1End Subresponse.write(a)'resposta da impressão desejada62- Outra opção q eu keria era saber se tem como criar função sem definir os parametros, ou que podesse ser criado de duas formas.OBS: Algumas funções pré definidas do VBScript aceita que seja passado apenas um parametro como tb aceita dois parametros.Ex:' iniciando um valor para strstr = "eu tu ele nós vós eles"' chamando a função passando apenas 1 (por padrão ele usa o espaço como separação)vetStr = Split(str)' iniciando um valor para strstr = "eu-tu-ele-nós-vós-eles"' chamando a função passando 2 parâmetros (eu posso escolher qual caracter euvetStr = Split(str, "-")Ex (o que eu kero q aconteça):' valor inicial de "a"a = 5' chama a função "Inc" que ira incrementar "a" em "1"Inc(a)' chama a função "Inc" que ira incrementar "a" em "3" (valor dinamico)Inc(a, 3)' função de incremento, podendo passar 1 ou 2 parâmetrosSub Inc(val, x) If x Then val = val + x Else val = val +1 End IfEnd SubEm JavaScript eu cosegui fazer a passagem de parametros sem ter q definilas, podendo passar 1 ou 2:OBS: o problema eh que tb não consegui fazer com que o valor do parametro que foi alterado me retornasse sem que seja usado o "return"<script RUNAT="SERVER" language="JavaScript">function Inc(){ if(Inc.arguments.length==2) Inc.arquments[0]+=Inc.arquments[1] else Inc.arquments[0]++}</SCRIPT>Kem poder ajudar eu agradeço muito...qualquer dúvida sobre os exemplos, entre em contato.Obrigado!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Existe sim. Basta declarar um argumento como byRef. Para exemplificar, vamos utilizar o mesmo exemplo postado por você:

 

Sub Inc (byRef val)

val = val + 1

end sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

E como eu faço para chamar a função podendo passar um ou dois parâmetros?Call Inc(num, 2)ouCall Inc(num)Sub Inc(byRef val, n) If IsNull(n) Then val = val + 1 Else val = val + n End IfEnd SubOBS: Na segunda chamada a função ele dá erro dizendo que faltam parametros.Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

No VB você pode especificar argumentos opcionais digitando a palavra-chave Optional antes do argumento.Function MyFunction(arg1 As tipo, Optional arg2) ouFunction MyFunction(arg1 As tipo, Optional arg2=valorpadrão)Isso não parece funcionar no VBScript.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E como eu faço para chamar a função podendo passar um ou dois parâmetros?

 

Call Inc(num, 2)

ou

Call Inc(num)

Experimente colocar Inc num. Não utilize Call nem parêntesis ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

No VB você pode especificar argumentos opcionais digitando a palavra-chave Optional antes do argumento.Function MyFunction(arg1 As tipo, Optional arg2) ouFunction MyFunction(arg1 As tipo, Optional arg2=valorpadrão)Isso não parece funcionar no VBScript.

o byRef funciona, mas o Optional não funciona. dá erro dizendo: "Identificador esperado"e não adiantou chamar sem o Callnenhum dos dois funcionouCall Inc(v1)eInc v1

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Visual Basic tem o Optional... Mas o VBScript não... =[Então para fazer isso, ou você cria duas sub rotinas, uma para receber dois e outra para receber um único valor, e quando for chamar (ou uma ou outra), você faz alguma verificação, para saber se tem os dois parâmetros ou não...Ou ainda, verifique se o JScript não possui algum método que facilite esse seu trabalho... Valeu?- Fernando Botelho

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.