These handy operators and expressions proposed for JSR-666: Programmability Enhancements are all very well and good, but I think there is an important operator missing. Happily, this crucial enhancement requires no changes to the JVM.
C-derived languages usually support
i--. Both of the former increment the value of i, and the latter decrement i; but the value of the first of each of those pairs of expressions is the new value of i, while the latter of each pair is the previous value.
I argue that we should have a similar alternative assignment operator. The value of the expression
i=3 is three; I propose that the
:= operator be defined so that
i:=3 return the value of i before the assignment takes place. Similarly, the shorthand operations such as
i+=3 should be complemented by
The benefits of this should be obvious. Foremost among them would be that the familiar
temp = a; a = b; b = temp; "swap a and b" code could be written as the much more desirable
a := b := a, thus eliminating the need for an unsightly temporary local variable. (Of course,
a = b := a would be equivalent, but I predict that the attractive symmetry of the previous example will find favour.)
All timestamps are Melbourne time.