> > The problem is not very clear to me, but the following should be right: > gambas uses operators to cast its operands; if it was not so, then why > use "&" instead "+" to concatenate strings? But, when you use notations > like "+=", you have a variable on the left (an L-Value), not a value you > can cast... now, if the user writes something that can not work, like: > > sString$ /= 3 > > the compiler should detect this. As Jussi says, this is a minor issue, > because even if the compiler does not notice, the interpreter will - as > soon the user checks the program. But this kind of check would be > responsibility of the compiler, not the interpreter.
The "?=" operators are just syntactic sugar. "A ?= B" is replaced by "A = A ? B" at compilation time. So the effect of reading values (as you said) depends on how the "?" operator works. And the effect of writing the value back always use automatic conversion > > About the "why not converting while writing"... it could be a good idea, > but "sString$ /= 3" what should do? Probably take the integer value > stored in sString$, divide by three, convert again in string, and store > the result back in sString$... 'sString$ /= 3' is equivalent to 'sString$ = sString$ / 3'. So sString$ is put on the stack, and the "/" automatically converts that string to a number (if it can). Then, once the division is done, the resulting floating point number is assigned to sString$, and so automatically converted to a string first. Regards, -- Benoît Minisini ------------------------------------------------------------------------------ _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user