Data do estudo: 16/05/2020
Tema: Introdução ao Elixir
- Overview do Elixir
- Instalação do Elixir - MacOS
- Getting Started - Introduction
- Executando script com iex -S
- Elixir v1.10 requer Erlang 21.0. Caso o Erlang não seja instalado automáticamente durante o processo de instalação verificar o tutorial de Instalação do Erlang.
brew update
brew install elixir
- Verificando instalação:
elixir --version
- Adicionar ao final do seu arquivo de shell (ex.: ~/.zshrc)
export PATH="$PATH:/path/to/elixir/bin"
iex
- Hello World:
iex -r scrip1.exs
- Nota: A documentação cita a execução utilizando
iex -S SCRIPTNAME
, porém isso se trata da execução de scripts no seuPATH
. É util para executar um comando mix no modo iterativo, ex:iex -S mix run
.
elixir scrip1.exs
Data do estudo: 16/05/2020
Tema: Tipos Básicos; Funções; Átomos
- Getting Started - Basic types
- Verificando tipo de um variável
- O que é String Interpolation
- Strings em Elixir - Detalhamento sobre lista de caracteres e sequência de bytes
- Como documentar em Elixir - Module Attributes
- Como funciona a compilação no Elixir e diferença entre elixir e elixirc
iex> 1 # integer
iex> 0x1F # integer
iex> 1.0 # float
iex> true # boolean
iex> :atom # atom / symbol
iex> "elixir" # string
iex> 'elixir' # list
iex> [1, 2, 3] # list
iex> {1, 2, 3} # tuple
- Nota: Diferentemente de javaScript
'elixir'
possui uma tipagem diferente de"elixir"
sendo o primeiro uma Lista de caracteres (Unicode) e o segundo um BitString (UTF-8)
Script (Debug)
IO.inspect(IEx.Info.info(5))
Modo interativo
iex> i {1, 2, 3}
Funções são identificadas por seu nome (name) e sua aridade (arity). A aridade de uma função indica quantos argumentos a função recebe.
round/1 # Função que arredonda um número
round/2 # Função não existente
Funções nomeadas podem ser chamadas com ou sem parênteses
iex> div(10, 2)
iex> div 10, 2
iex> round (13.5)
iex> round 13.5
- Para ver a documentação da função nomeada, usa-se a função h seguido do name/arity de uma função. ex.:
h round/1
É uma constante cujo valor é o seu próprio nome. Outras linguagem chamam de symbols.
São muitas vezes usados para expressar o estado de uma operação, ao usar valores como: :ok
e :error
.
- True e false também são átomos
iex> true == :true # true
iex> true === :true # true
iex> is_atom(false) # true
Interpolação de String (String Interpolation) é permitida para facilitar a formatação de um texto. Semelhante a ecmascript, porém, ao invés de usar ${}
usa-se #{}
.
iex> "hello #{:world}" # "hello world"
iex> "hello #{"another world"}" # "hello another world"
- Nota: Para verificar se uma variável é uma string ou não é utilizado a função
is_binary/1
ao invés de uma supostais_string/1
.
Exemplo:
- Javascript
add = (a, b) => a + b;
add(1,2)
- Elixir
add = fn a, b -> a + b end
add.(1,2)
- Nota: É necessário utilizar o (.) após o nome da variável (add). Isso é necessário para evitar ambiguidade entre chamar a função anonima armazenada na variável
add
e uma função nomeadaadd/2
.
Uma função anônima mantém o escopo de quando foi declarada, no exemplo a seguir, a variável utilizada pela função anônima vai ter seu valor alterado após a declaração da função, porém o valor retornado pela função continua sendo o valor da variável no momento de sua declaração.
-
Nota: Estruturas de dados em Elixir são imutáveis. Por exemplo, remover ou concatenar elementos de uma lista retorna uma nova lista
-
Nota fora de contexto: A extensão do arquivo não importa, .ex e .exs são apenas convenções.