Len is now a FUNCTION and not an operator

BlitzMax Forums/BlitzMax Programming/Len is now a FUNCTION and not an operator

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

BE AWARE THAT IT IS NOW DEFINATLY A FUNCTION
That's wrong.
LEN is REALLY REALLY a unitary operator
And this of course is right.

Here are three proofs:

1.: You can't find the source code or at least an extern declaration for this "function" (which you can do for all other functions)

2.: You can't find the memory address of the entry point of this "function":
Strict
Framework brl.blitz

Local LenPtr:Byte Ptr = Len
Local LenInt = Int LenPtr
WriteStdout "The Len-function is located at: " + LenInt + "~n"

3.: You don't need brackets at all:
Strict
Framework brl.blitz

WriteStdout Len "123" + 1
WriteStdout "~n"
The only need for brackets is if you're using V1.22/1.24 and want to show the compiler that the expression which is Len's parameter should be compiled before the Len-operator itself. This is because the operator just changed precedence - in V1.20 and before the precedence was lower than the member access operator and higher than the negation operator; in V1.22/1.24 in contrast it has same precedence like the New-operator (which is higher than the member access operator).