07-18-2022, 02:39 PM
Functions will pass by reference in the exact same manner as subs. The main rule of thumb is that variable types *must* match to pass.
Examples:
Now, the above will print 2, 4, 6 onto the screen, as the value of X changes and is passed back to the main routine with each run of the function.
And the above will print 2, 2, 2 on the screen, as the function Foo uses an Integer, and the main module is passing a _FLOAT. The two variable types aren't the same, so the value won't pass by reference.
For SUBs and for FUNCTIONs, variables pass by reference as long as the types match.
Examples:
Code: (Select All)
DIM x AS INTEGER
x = 0
PRINT Foo(x)
PRINT Foo(x)
PRINT Foo(x)
FUNCTION Foo (X AS INTEGER)
X = X + 1
Foo = 2 * X
END FUNCTION
Now, the above will print 2, 4, 6 onto the screen, as the value of X changes and is passed back to the main routine with each run of the function.
Code: (Select All)
DIM x AS _FLOAT
x = 0
PRINT Foo(x)
PRINT Foo(x)
PRINT Foo(x)
FUNCTION Foo (X AS INTEGER)
X = X + 1
Foo = 2 * X
END FUNCTION
And the above will print 2, 2, 2 on the screen, as the function Foo uses an Integer, and the main module is passing a _FLOAT. The two variable types aren't the same, so the value won't pass by reference.
For SUBs and for FUNCTIONs, variables pass by reference as long as the types match.