The ::CONSTANT directive creates methods that return constant values for a class and its instances.


A ::CONSTANT directive defines a method that returns a constant value. This is useful for creating named constants associated with a class.

The name is a literal string or a symbol that is taken as a constant. A method of the given name is created as both an instance method and a class method of the most recent ::CLASS directive. A ::CLASS directive is not required before a ::CONSTANT directive. If no ::CLASS directive precedes ::CONSTANT, a single constant method method is created that is not associated with a class but is accessible to the main (executable) part of a program through the .METHODS built-in object. Only one ::CONSTANT directive can appear for any method name not associated with a class. See .METHODS for more details.

The methods created by a ::CONSTANT directive are UNGUARDED and will have a return result that is specified by value. The constant value must be a single literal string or symbol that is taken as a constant. Also permitted is the single character "-" or "+" followed by a literal string or symbol that is a valid number. Here are some examples of valid constants:

 ::class MathConstants public
::constant pi 3.1415926 ::constant author "Isaac Asimov"
::constant absolute_zero -273.15

A ::CONSTANT directive is a shorthand syntax for creating constants associated with a class. The created name constant can be accessed using either the class object or an instance of the class itself. For example:

say "Pi is" .MathConstants~pi    -- displays "Pi is 3.1415926"
instance = .MathConstants~new
say "Pi is" instance~pi          -- also displays "Pi is 3.1415926"

::class MathConstants public
::constant pi 3.1415926