Módulo 1: O "Código que escreve Código"
Caro aluno, bem-vindo ao coração do Elixir. Muitas linguagens tratam Metaprogramação como uma "magia negra" perigosa que deve ser evitada. No Elixir, ela é a base da própria linguagem.
Antes de escrevermos nossa primeira macro, você precisa entender um segredo: Quase tudo o que você usa em Elixir é uma Macro.
O núcleo da linguagem (o compilador) é extremamente pequeno. A maior parte das funcionalidades que você usa no dia a dia foi construída sobre esse núcleo, usando Metaprogramação.
Aqui estão os 4 exemplos clássicos de uso na indústria:
Kernel)Você sabia que if, unless, def, defmodule e alias não são palavras reservadas do compilador?
Elas são macros escritas em Elixir!
if, o compilador troca isso por uma estrutura case (que é a primitiva real da linguagem).if do Elixir, você pode criar o seu próprio meu_if e ele se comportará como um cidadão de primeira classe.O Ecto permite escrever consultas SQL usando sintaxe Elixir.
Elixir
# Isso parece Elixir, mas vira SQL seguro from u in User, where: u.age > 18
O framework Phoenix usa macros para definir rotas de forma limpa.
Elixir
get "/users/:id", UserController, :show