Constants
Constants are a way of giving a name to shared, static values inside of a module
or script
.
The constant's must be known at compilation. The constant's value is stored in the compiled module or script. And each time the constant is used, a new copy of that value is made.
#
DeclarationConstant declarations begin with the const
keyword, followed by a name, a type, and a value. They can exist in either a script or module
For example
#
NamingConstants must start with a capital letter A
to Z
. After the first letter, constant names can contain underscores _
, letters a
to z
, letters A
to Z
, or digits 0
to 9
.
Even though you can use letters a
to z
in a constant. The general style guidelines are to use just uppercase letters A
to Z
, with underscores _
between each word.
This naming restriction of starting with A
to Z
is in place to give room for future language features. It may or may not be removed later.
#
Visibilitypublic
constants are not currently supported. const
values can be used only in the declaring module.
#
Valid ExpressionsCurrently, constants are limited to the primitive types bool
, u8
, u64
, u128
, address
, and vector<u8>
. Future support for other vector
values (besides the "string"-style literals) will come later.
#
ValuesCommonly, const
s are assigned a simple value, or literal, of their type.
For example
#
Complex ExpressionsIn addition to literals, constants can include more complex expressions, as long as the compiler is able to reduce the expression to a value at compile time.
Currently, equality operations, all boolean operations, all bitwise operations, and all arithmetic operations can be used.
If the operation would result in a runtime exception, the compiler will give an error that it is unable to generate the constant's value
Note that constants cannot currently refer to other constants. This feature, along with support for other expressions, will be added in the future.