Jump to content

Recommended Posts

Posted

Boa tarde.

Este foi o problema com que me deparei, testar o output dos parâmetros das sub rotinas.

Quis saber o que acontecia se não identificasse o ByRef ou o ByVal, mas cheguei a uma outra conclusão surpreendente. O comportamento é diferente conforme chamemos a sub rotina com parênteses, com Call ou sem parênteses.

Abaixo um simples exemplo:

<%
sub r1 (t)
	response.write("Routina 1 (no specs): ")
	t=1
	response.write(t & " - ")
end sub

sub r2_byref (ByRef t)
	response.write("Routina 2 (ByRef): ")
	t=2
	response.write(t & " - ")
end sub

sub r3_byval (ByVal t)
	response.write("Routina 3 (ByVal): ")
	t=3
	response.write(t & " - ")
end sub


teste=0
r1(teste)
response.write(teste & " - r1(teste)<br>")
teste=0
r1 teste
response.write(teste & " - r1 teste<br>")
teste=0
call r1(teste)
response.write(teste & " - call r1(teste)<br><br>")

teste=0
r2_byref(teste)
response.write(teste & " - r2_byref(teste)<br>")
teste=0
r2_byref teste
response.write(teste & " - r2_byref teste<br>")
teste=0
call r2_byref(teste)
response.write(teste & " - call r2_byref(teste)<br><br>")

teste=0
r3_byval(teste)
response.write(teste & " - r3_byval(teste)<br>")
teste=0
r3_byval teste
response.write(teste & " - r3_byval teste<br>")
teste=0
call r3_byval(teste)
response.write(teste & " - call r3_byval(teste)<br><br>")
%>

o resultado é o seguinte:

Routina 1 (no specs): 1 - 0 - r1(teste)
Routina 1 (no specs): 1 - 1 - r1 teste
Routina 1 (no specs): 1 - 1 - call r1(teste)

Routina 2 (ByRef): 2 - 0 - r2_byref(teste)
Routina 2 (ByRef): 2 - 2 - r2_byref teste
Routina 2 (ByRef): 2 - 2 - call r2_byref(teste)

Routina 3 (ByVal): 3 - 0 - r3_byval(teste)
Routina 3 (ByVal): 3 - 0 - r3_byval teste
Routina 3 (ByVal): 3 - 0 - call r3_byval(teste)

----

Conclusão:

- sub rotina com parênteses o parâmetro é sempre passado como Valor mesmo que indentificado com ByRef

- sub rotina chamada com Call ou sem parênteses, o parâmetro respeita a identificação ByRef ou ByVal e no caso de não haver especificação é passado como Referencia.

 

Não sei se era de domínio comum, nem sei a explicação, mas como achei tudo tão esquisito, apenas queria partilhar aqui esta minha "descoberta".

 

Nota: Caso este tópico esteja no local errado, sintam-se livres para o moverem para um local mais adequado.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.