Writing Our Own Sigils
Learn to write our own sigils in Elixir.
We'll cover the following
Writing a sigil
Elixir is packed with features that make coding a joy. This chapter contains a smattering of them.
We know by now that we can create strings and regular-expression literals using sigils:
string = ~s{now is the time}
regex = ~r{..h..}
Have you ever wished you could extend these sigils to add your own specific literal types? You can.
When we write a sigil such as ~s{...}
, Elixir converts it into a call to the function sigil_s
. It passes the function two values:
- The first is the string between the delimiters.
- The second is a list containing any lowercase letters that immediately follow the closing delimiter. This second parameter is used to pick up any options we pass to a regular-expression literal, such as
~r/cat/if
.
Here’s the implementation of a sigil ~l
that takes a multiline string and returns a list containing each line as a separate string. We know that ~l...
is converted into a call to sigil_l
, so we just write a simple function in the LineSigil
module.
Get hands-on with 1400+ tech skills courses.