constant - pannous/wasp GitHub Wiki

constant

As with mutability, there are two kinds of constance:

  • 'reference constant': constant variables point to the same objects during their lifetime.
  • 'value constant': constant objects don't change (their inner value) during their lifetime.

To simplify the situation, Angle offers the final keyword which means both:

final x = Node()
x = 7 // error can't change variable x
x.y=z // error can't change Node x

In rare cases one may want to combine both concepts though:

mutable x = constant Node()
x = 7 // ok value was constant, not variable
x.y=z // error can't change inner value

constant x = mutable Node()
x = 7 // error
x.y=z // ok can change x