以前はできなかった、と思う。*1
Number ++ := method( varname := call message previous name now := call sender getSlot(varname) if (now, call sender setSlot(varname, now + 1)) self ) a := 1 a println # => 1 a ++ println # => 1 (後置なので返ってくるのは 1 !) a println # => 2 (a++ + 456 / 3) println # => 154 a println # => 3 1++ println # => 一応、リテラルに対してやってもエラーがでないように…
以前は、 call message previous が実装されていなかったために、変数名を知ることができなかった(はず)。
仕様
hoge moge ++ だと残念なことに。
*1:ずいぶん前の話かもしれないが