Variables
| = binds | |
| Rebinding | |
| Naming rules snake_case | |
| Pin with ^ |
= binds
The single equals sign is the match operator: it matches the value on the right against the pattern on the left. With a fresh name on the left, matching binds the value to that name.
name = "Ada"
age = 36
IO.puts(name) # prints Ada
IO.puts(age) # prints 36
Rebinding
You may bind a new value to the same name at any time, and the old value is simply gone. A match against a bound name can still fail: writing 1 = 2 raises a MatchError because 1 never matches 2.
x = 1
x = x + 1
IO.puts(x) # prints 2
Naming rules snake_case
Variable names start with a lowercase letter or an underscore, then use lowercase letters, digits, and underscores. Words join with underscores, a style called snake_case.
Names cannot start with a digit and cannot contain spaces or dashes. A leading capital letter would turn the name into an alias, which lesson 08 covers.
first_name = "Ada"
score_2 = 10
IO.puts(first_name) # prints Ada
Pin with ^
The pin operator stops rebinding and turns the name into an assertion instead. The line below passes only because expected already holds 42.
expected = 42
^expected = 42 # matches, nothing changes
A different number on the right would raise a MatchError rather than rebind. Reach for pin whenever an old value must stay exactly as it is.
Next: Numbers
Article author: Arthur Isaev