02-03-2024, 06:32 PM
CLEAR and ERASE and any other similar command has always just seemed too unreliable, in my opinion. There's just too many various rules around their behavior. Do they affect arrays? variables? dynamic? static? ones in SUBS/FUNCTIONS? What gets erased? What gets freed completlely?
FOR I = 1 to 10
x(1) = I
NEXT
CLEAR
FOR I = 1 to 10
PRINT x(I)
NEXT
In the above, does x(I) just get reset to 0? Does it get erased and freed completely? After all, there's no call to DIM it before the first FOR, so it works just fine. IS that second FOR reusing the same variable array which has been blanked to 0, or is it a whole new array?
It's not immediately obvious what the heck is going on here, and personally I don't like that ambiguity in my code. When I'm editing and working on something at 2 AM, after a long 18-hour day, I don't want to have to dig up some manual or wrack my brain on how some esoteric and forgotten command works. I want to keep things simple:
FOR I = 1 to 10
x(1) = I
NEXT
ResetArrays
FOR I = 1 to 10
PRINT x(I)
NEXT
SUB ResetArrays
SHARED X()
FOR i = LBOUND(X) TO UBOUND(X)
X(I) = 0
NEXT
END SUB
No questions there about what's going on. It's the same array. Same position in memory, with the same offsets and such. It's just had all its values reset to the default of 0. Simple. No questions about what's going on and what is actually doing what where. It's resetting and initializing my arrays to 0.
What could possibly be simpler, or better than that?
FOR I = 1 to 10
x(1) = I
NEXT
CLEAR
FOR I = 1 to 10
PRINT x(I)
NEXT
In the above, does x(I) just get reset to 0? Does it get erased and freed completely? After all, there's no call to DIM it before the first FOR, so it works just fine. IS that second FOR reusing the same variable array which has been blanked to 0, or is it a whole new array?
It's not immediately obvious what the heck is going on here, and personally I don't like that ambiguity in my code. When I'm editing and working on something at 2 AM, after a long 18-hour day, I don't want to have to dig up some manual or wrack my brain on how some esoteric and forgotten command works. I want to keep things simple:
FOR I = 1 to 10
x(1) = I
NEXT
ResetArrays
FOR I = 1 to 10
PRINT x(I)
NEXT
SUB ResetArrays
SHARED X()
FOR i = LBOUND(X) TO UBOUND(X)
X(I) = 0
NEXT
END SUB
No questions there about what's going on. It's the same array. Same position in memory, with the same offsets and such. It's just had all its values reset to the default of 0. Simple. No questions about what's going on and what is actually doing what where. It's resetting and initializing my arrays to 0.
What could possibly be simpler, or better than that?