Me enfrento a algo raro en VBScript. Cuando escribo un procedimiento en el que quiero que el parámetro pase por referencia, la forma de invocar este procedimiento cambia la forma en que se pasa el parámetro.ByRef y ByVal en VBScript
Aquí se muestra un ejemplo:
Sub IncrementByRef(ByRef Value)
Value = Value + 1
End Sub
Sub IncrementByVal(ByVal Value)
Value = Value + 1
End Sub
Dim Num
Num = 10
WScript.Echo "Num : " & Num
IncrementByRef(Num) : WScript.Echo "IncrementByRef(Num) : " & Num
IncrementByRef Num : WScript.Echo "IncrementByRef Num : " & Num
IncrementByVal(Num) : WScript.Echo "IncrementByVal(Num) : " & Num
IncrementByVal Num : WScript.Echo "IncrementByVal Num : " & Num
Y aquí está la salida:
U:\>cscript //nologo byrefbyval.vbs
Num : 10
IncrementByRef(Num) : 10
IncrementByRef Num : 11
IncrementByVal(Num) : 11
IncrementByVal Num : 11
U:\>
Al especificar los parámetros se pasan ByVal, funciona como se esperaba, no importa la forma en que el procedimiento es llamado. Pero cuando se especifican los parámetros se pasan ByRef, que funcionará como se espera si llamar al procedimiento de esta manera:
IncrementByRef Num
pero no de esta manera:
IncrementByRef(Num)
Esto parece extraño para mí. ¿Hay alguna manera de asegurarse de que ByRef pase los parámetros, no importa cómo se llame al procedimiento?
... Así de simple? ¡Y estuve luchando por ello durante una hora! Gracias, +1. – Jet