Namespacing modules
We can think of a module as a namespace. Every function defined inside a module has to be prepended with that module's name in order to be invoked elsewhere.
It is also possible to store our modules inside directories in order to better organize them to suit our purpose or intent.
In this recipe, we will show you how to namespace modules and use them.
Getting ready
In this recipe, we will use a Mix application. You will find the application in the source code folder under chapter3/demo
. Navigate to the application directory in your terminal window and compile the project to make sure everything is ready:
> cd Code/Chapter 4/demo > mix compile
How to do it…
In order to demonstrate the use of three namespaced modules within our generated Mix application, follow these steps:
Modify the
lib/demo.ex
file by adding therun_me
function:def run_me(name \\ "Stranger") do IO.puts " #{__MODULE__} says \"Hi there #{name}!\"" Demo.Greeter.greet Demo.One.Greeter.greet Demo...