The Lurker

Latest posts | Archive

posted by ajf on 2003-04-19 at 02:12 am

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 and i++, and --i and 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 i+:=3.

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.)

Related topics: Java Mindless Link Propagation Mooax

All timestamps are Melbourne time.