As Elixir is a functional language, functions play a significant role in developing Elixir applications. Typically, many little functions operate on data in functional language applications.
Let’s learn how to define functions and how we may organize them using modules.
For example, let’s suppose we have a valid?
function, which tests if something is valid and returns a boolean response. Let’s also suppose we have a check!
function, which does the checking and throws a runtime error if the check fails.
In Elixir, a function ending with ?
does not require a return boolean value. Moreover, using !
indicates that an exception will be thrown if something goes wrong. These are commonly used norms among developers. Thus, following these is usually recommended because it makes understanding Elixir code much easier for other developers.
Here is what an essential function definition looks like:
def sum(a, b) do
a + b
end
Modules provide the namespace for functions and other items declared inside modules. These are usually grouped if they have the same meaning.
Elixir, for example, includes a set of functions for working with the Enum
module’s enumerables. In addition, the IO
module offers functions for dealing with input/output operations.
Modules in Elixir are defined using the defmodule
keyword, followed by the module’s name and a bloc, which includes the module’s body.
defmodule educative do
def print do
IO.puts "i am learning"
end
end
When calling a function inside the module, we can use the ModuleName.function_name format, as in line 11 below:
defmodule SampleModule do # Modulesdef print do # functionIO.puts "Hello module"endendSampleModule.print
A module can also be defined inside another module. Then, a function can be called inside the inner module using the dot separator between the module names, as in line 23 below:
defmodule SampleModuleOuter do # Moduledefmodule SampleModuleInner do # Moduledef print(content) do #functionIO.puts contentendenddef print doSampleModuleInner.print "Hello module"endend# calling the nested module funtionSampleModuleOuter.SampleModuleInner.print "Hello module"
Free Resources