Assigning stuff
C-languages (and the like) make difference between the “assign” operator and the “comparison: equal” operator, as opposed to BASIC-languages where both share the same symbol. The other assign operators such as “+=
“, “-=
“, “*=
” and “/=
“, in comparison, operate the same way in both languages – almost. In C-languages you can use assign operators pretty much anywhere within expressions because unlike in BASIC-languages, they return the value that was just assigned. That’s why you can use “a=b=c=1
” in C, and have all the three variables be assigned a value of 1. In BASIC-languages, where symbol “=
” defines the comparison operator, the same statement would equal C-expression of “a=(b==c==1)
” which would result in a boolean value of True
or False
to be assigned to variable a, depending on the values of b and c.
The problem in BASIC-langages is that the compiler can’t tell whether the user wanted to express an assignment or a comparison with symbol “=
“, except for the first one in line; the rest are considered “comparison: equal”. BASIC-language parsers typically distinguish these two operators (that share the same symbol) by context: Are we expecting a value here or not. Therefore, by design, BASIC-language assign operators don’t return a value. Unfortunately, nor do any of the other assign operators: “+=
“, “-=
“, etc. because of consistency. Thus you can’t do loop auto increments like:
While ((myVar += 1) < 10)
In addition, since no value is evaluated by the assignment you can’t have the operation applied before/after evaluation, like the “++
” and “--
” operators in C do (they can appear before or after a variable). In addition, the “--
” as prefix has also a double meaning: it can either be decrement before evaluation, or a double unary minus. Too much noice here. And that’s why those operators are missing from most BASIC-languages including VB.NET – and they won’t make it to CoolBasic either. You will be able to use “i += 1
“, but not within a value expression.
In summary, these are the assign operators that will be implemented to CoolBasic V3:
"=", "+=", "-=", "*=", "/=", "<<="
and ">>="
.
Edit 15.5.2009: Fixed typos.