Rosetta Example: Classes

package req nx

nx::Class create summation {
  :method init {} {set :v 0}
  :public method add {x} {incr :v $x}
  :public method value {} {return ${:v}}
  :public method destroy {} {puts "ended with value [:value]"; next}
}

Demonstrating the behavior in a shell:

% set sum [summation new]
% $sum value
0
% $sum add 1
1
% $sum add 2
3
% $sum add 3
6
% $sum add 4
10
% $sum value
10

During the destroy of the object, ended with value 10 is printed

% $sum destroy