Diferença entre arquivos .ex e .exs no Elixir

Seguindo com as nossas dúvidas de iniciantes, hoje vamos comentar sobre os arquivos .ex e .exs que o Elixir nos permite usar.

A primeira coisa que devemos ter conhecimento é que o Elixir pode “executar” arquivos compilados ou arquivos de script.

Arquivos .ex

Arquivos .ex são arquivos que podemos compilar e assim gerar arquivos .beam que é o bytecode gerado pelo Elixir para que a máquina virtual do Erlang consiga interpretá-lo, ou seja, arquivos com extensão .ex são arquivos que serão compilados. Para um exemplo, crie o arquivo say.ex conforme abaixo:

# say.ex
defmodule Say do
def hello do
IO.puts "Hello!!!"
end
end

Agora, após salvar, use o elixirc para compilá-lo rodando o comando…

=> elixirc say.ex

Nesse momento você vai perceber que é gerado o arquivo Elixir.Say.beam .

Agora que o arquivo .beam já foi criado podemos entrar no iex (estando na mesma pasta do arquivo .beam para que o arquivo seja carregado em memória) e usar o módulo e função que criamos. Veja:

=> iex
iex(1)> Say.hello
Hello!!!
:ok

Simples, não? :-)

Arquivos .exs

Agora vamos para o arquivo .exs que são os arquivos de script.

A única diferença para um arquivo .ex é que quando rodamos arquivos .exs eles são compilados e disponibilizados na memória ao invés de criar o arquivo .beam.

Para um exemplo, crie um arquivo hello.exs com o seguinte conteúdo:

# hello.exs
IO.puts "Hello from exs file!!!"

Após salvar, execute…

=> elixir hello.exs
Hello from exs file!!!

Daí você vai perceber que a saída é mostrada como esperamos. ;-)

Enfim, em resumo, arquivos .ex são para compilar e arquivos .exs são arquivos de scripting.

É isso gente, espero que tenham entendido mais essa e até a próxima!

Ahh… aproveitando, não esqueçam que agora estamos com o curso de Programação Funcional com Elixir, não deixe e conferir! ;-) E claro, aproveite para nos acompanhar nas redes sociais e assinar a nossa newsletter semanal para receber mais dicas como essa. Vlw!!!