NX supports the concept of properties, which can be used to configure instance variables of a class (or an object) at creation or run time and to add standardized accessor methods.
package req nxIn a first step, we create a class named Foo with three
properties, x, y and z.
% nx::Class create Foo { :property x :property -accessor public y :property -incremental z:0..n } ::Foo
By defining something as a property, it will be possible
(1) to specify a value for the same-named instance variable at creation time,
(2) to modify the instance variable via configure, and
(3) to access the value of this instance variable from the via the cget method.
% Foo create f1 -x 1 ::f1 % f1 cget -x 1 % f1 configure -x 2 % f1 cget -x 2
When a property is defined with an accessor (see property y), then
an accessor method is added with the specified protection level. The
accessor method has the same name as the property. All accessor
method can be used to set and get the value of the instance
variable.
% f1 y set 3
3
% f1 y get
3Certainly, the methods configure and cget can be used also for
these properties as in the example with property x.
% f1 cget -y
3It is possible to add more and application specific subcommands to the accessor method, but this is not covered in this chapter. However, when a property is defined as incremental it uses this feature to extend the sub-methods.
When a property is defined as incremental, a public accessor and
multivalued are assumed. By specifying incremental the
sub-commands add and delete are provided to the accessor, which
allows one to add or delete values to a "multivalued" property
incrementally (see property z). The term incrementally means here
that one can e.g. add values to the list without the need to get the
values of the list in a first step, to lappend the value, and to
set the value again. The add sub-command is similar to push in
MongoDB or LPUSH in redis.
% f1 z add 1 1 % f1 z add 2 2 1 % f1 z add 3 end 2 1 3 % f1 z get 2 1 3
The submethod delete can be used to delete a certain value from
the list of value.
% f1 z delete 2
1 3