Conhecendo o Shell Interativo do Elixir (IEx)

Continuando nossos estudos sobre Elixir, dessa vez vamos falar sobre o IEx, o Shell Interativo do Elixir.

Se você vem de linguagens com o Ruby e Python já deve estar acostumado com um REPL (Read, Eval, Print, Loop), que nada mais é que um interpretador de código em tempo real. Com o Elixir não é diferente pois ele possui o IEx que cumpre esse papel com louvor.

Após instalar o Elixir, o IEx já estará disponível para uso, bastando digitar iexno terminal para ter acesso ao mesmo.

Como em qualquer outro REPL, basta que se digite qualquer instrução válida para que a mesma seja interpretada, no entanto, existem algumas pequenas dicas que podem te ajudar a usar o IEx de uma forma ainda melhor.

1a Dica

A primeira delas é que existem diversos Helpers no IEx que podem ser acessados digitando-se o h(). A saída para esse comando é essa:

IEx.Helpers
Welcome to Interactive Elixir. You are currently seeing the documentation for
the module IEx.Helpers which provides many helpers to make Elixir's shell more joyful to work with.
This message was triggered by invoking the helper h(), usually referred to as h/0 (since it expects 0 arguments).
You can use the h/1 function to invoke the documentation for any Elixir module or function:
iex> h(Enum)
iex> h(Enum.map)
iex> h(Enum.reverse/1)
You can also use the i/1 function to introspect any value you have in the shell:
iex> i("hello")
There are many other helpers available, here are some examples:
  • b/1            - prints callbacks info and docs for a given module
• c/1 - compiles a file into the current directory
• c/2 - compiles a file to the given path
• cd/1 - changes the current directory
• clear/0 - clears the screen
• exports/1 - shows all exports (functions + macros) in a module
• flush/0 - flushes all messages sent to the shell
• h/0 - prints this help message
• h/1 - prints help for the given module, function or macro
• i/0 - prints information about the last value
• i/1 - prints information about the given term
• ls/0 - lists the contents of the current directory
• ls/1 - lists the contents of the specified directory
• open/1 - opens the source for the given module or function in
your editor
• pid/1 - creates a PID from a string
• pid/3 - creates a PID with the 3 integer arguments passed
• ref/1 - creates a Reference from a string
• ref/4 - creates a Reference with the 4 integer arguments
passed
• pwd/0 - prints the current working directory
• r/1 - recompiles the given module's source file
• recompile/0 - recompiles the current project
• runtime_info/0 - prints runtime info (versions, memory usage, stats)
• v/0 - retrieves the last value from the history
• v/1 - retrieves the nth value from the history
Help for all of those functions can be consulted directly from the command line using the h/1 helper itself. Try:
iex> h(v/0)

Nessa saída temos pelo menos 5 coisas a se observar.

1 — Todos os helpers são mostrados com a sua respectiva aridade das funções, conforme aprendemos no post anterior.

2 — Podemos “pedir ajuda” sobre qualquer módulo ou função, bastando para isso invocar o h(<nome do módulo ou função>). Ex: h(Enum) ou h(Enum.map). Isso é legal pois se você vem do Ruby você só consegue fazer isso fora do REPL, usando o RI, e ter tudo integrado no IEx já te dá uma boa vantagem na hora de consultar sobre uma função ou módulo, evitando o uso da Internet para consultar documentação.

3 — Podemos “inspecionar” qualquer valor usando i(<valor>). Ex: i(“olá”). Mais uma vez, se você vem do Ruby, seria o mesmo que usar o método .inspect nos objetos, mas como estamos usando uma linguagem funcional tudo vai se resumir a funções para resolver os problemas, e o i/1 é um bom exemplo disso.

4 — Existem vários outros helpers como o v/0, o i/1ou o r/1, que nesse caso permite recompilar um módulo informado.

5 — Você pode “pedir ajuda” sobre os próprios helpers, bastando para isso invocar h(<helper>) para conhecê-lo. Ex: h(v/0). Mais uma vez, isso facilitará bastante conhecer cada um dos helpers apresentados.

2a Dica

A segunda dica é que podemos usar a tecla TAB para autocompletar o nome de módulos ou funções. Para isso, basta digitar as iniciais do nome do módulo e pressionar TAB ou o nome do módulo, um ponto, e em seguida pressionar TAB para ver o nome das funções públicas do módulo. Ex.: String. <TAB>

3a Dica

E por fim, uma terceira dica, que são as formas de sair do IEx.

1 — Você pode pressionar CRTL+C duas vezes

2 — Pressionar CRTL+C e em seguida ‘q’,

3 — Ou ainda pode pressionar CTRL+\

Enfim, essas são as pequenas dicas para quem está iniciando no mundo do Elixir. 🙂

É isso gente, espero que tenham gostado e, como sempre, não deixem de nos acompanhar nas redes sociais e também de se cadastrar em nossa newsletter semanal.

Até a próxima! 😉