ssscassio / elixir-study

📚 Diário de estudos - Elixir

Home Page:https://elixir-lang.org/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Elixir Logo


Data do estudo: 16/05/2020

Tema: Introdução ao Elixir

Referências:

Instalação

  • 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

Setando variável de ambiente:

  • Adicionar ao final do seu arquivo de shell (ex.: ~/.zshrc)
export PATH="$PATH:/path/to/elixir/bin"

Executando

Modo Interativo:

iex
  • Hello World:

Elixir Hello World - Modo Interativo

Script via modo Interativo:

iex -r scrip1.exs

Elixir Hello World - Modo Interativo - Script

  • Nota: A documentação cita a execução utilizando iex -S SCRIPTNAME, porém isso se trata da execução de scripts no seu PATH. É util para executar um comando mix no modo iterativo, ex: iex -S mix run.

Script via executável elixir:

elixir scrip1.exs

Elixir Hello World - Elixir


Data do estudo: 16/05/2020

Tema: Tipos Básicos; Funções; Átomos

Referências:

Tipos básicos

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)

Inspecionando uma variável:

Script (Debug)

IO.inspect(IEx.Info.info(5))

Info - Elixir

Modo interativo

iex> i {1, 2, 3}

Info - Interativo

Funções

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

Atoms

É 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

String

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 suposta is_string/1.

Funções anônimas

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 nomeada add/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.

  • Exemplo em Elixir Função anônima - Elixir

  • Comparação com o resultado em javascript. Função anônima - javascript

  • 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.


About

📚 Diário de estudos - Elixir

https://elixir-lang.org/


Languages

Language:Elixir 100.0%