ligo/gitlab-pages/docs/language-basics/variables-and-constants.md
Sander 8f60accc24 - Improve darkmode support
- Reenable code block tabs
- Reeneble code blocks highlighting
2020-03-04 13:19:00 +00:00

3.3 KiB

id title
constants-and-variables Constants & Variables

import Syntax from '@theme/Syntax';

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
let 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.mligo age
# Outputs: 25
let 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.religo 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

As expected in the pure subset of a functional language, CameLIGO only features constant values: once they are declared, the value cannot be changed (or "mutated").

let add (a : int) (b : int) : int =
  let c : int = a + b in c

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.mligo add '(1,1)'
# Outputs: 2

As expected in the pure subset of a functional language, ReasonLIGO only features constant values: once they are declared, the value cannot be changed (or "mutated").

let add = ((a, b): (int, int)): int => {
  let c : int = a + b;
  c;
};

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.religo add '(1,1)'
# Outputs: 2