Book Image

Elixir Cookbook

By : Paulo Pereira
Book Image

Elixir Cookbook

By: Paulo Pereira

Overview of this book

Table of Contents (16 chapters)
Elixir Cookbook
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

Enforcing behaviors


One of the reserved module attributes in Elixir is @behaviour. It is used to ensure that a given module implements the required callbacks and that the module implements a given interface and behaves in a defined way.

How to do it…

To demonstrate the use of the @behaviour module attribute, follow these steps:

  1. Create the Randomizer module inside the randomizer.ex file by adding the following code:

    defmodule Randomizer do
      use Behaviour
      defcallback randomize(low::Integer.t, high::Integer.t) :: Integer.t
    end
  2. Create a module to implement the Randomizer behavior inside the my_module.ex file by adding the following code:

    defmodule MyModule do
      @behaviour Randomizer
    end
  3. Open a new IEx session in the same directory where the modules defined in steps 1 and 2 are stored:

    > iex
    
  4. Compile both modules starting with Randomizer:

    iex(1)> c("randomizer.ex")
    [Randomizer]
    iex(2)> c("my_module.ex")
    my_module.ex:1: warning: undefined behaviour function randomize/2 (for behaviour Randomizer...