Version: 0.9.0

Constants & Variables

The next building block after types are constants and variables.

Constants#

Constants are immutable by design, which means their values cannot be reassigned. Put in another way, they can be assigned once, at their declaration. When defining a constant you need to provide a name, type and a value:

const age : int = 25

You can evaluate the constant definition above using the following CLI command:

ligo evaluate-value gitlab-pages/docs/language-basics/src/variables-and-constants/const.ligo age
# Outputs: 25

Variables#

Variables, unlike constants, are mutable. They cannot be declared in a global scope, but they can be declared and used within functions, or as function parameters.

⚠️ Please be wary that mutation only works within the function scope itself, values outside of the function scope will not be affected. In other words, when a function is called, its arguments are copied, as well as the environment. Any side-effect to that environment is therefore lost when the function returns.

// The following is invalid: use `const` for global values instead.
// var four : int := 4
function add (const a : int; const b : int) : int is
block {
var c : int := a + 2*b;
c := c - b
} with c

⚠️ Notice the assignment operator := for var, instead of = for constants.

You can run the add function defined above using the LIGO compiler like this:

ligo run-function gitlab-pages/docs/language-basics/src/variables-and-constants/add.ligo add '(1,1)'
# Outputs: 2