passarito Posted June 13, 2024 at 02:43 PM Report #633171 Posted June 13, 2024 at 02:43 PM 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.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now