Aula 1 de Introdução a Elixir (09/03/2023)
Sobre este livebook
Vídeo disponível em https://www.youtube.com/watch?v=UC4cIIHry1I.
Tipos básicos
1340
"Adolfo Neto 64646"
3.333356
10 / 3
:idade
Tipos básicos:
- Números inteiros
- Strings
- Números de ponto flutuante
- Átomos
Tipos Complexos
[]
[123, 676, 545]
["adolfo", 566, 683.78, :idade]
{133, "adolfo"}
{7676.33, "aldo", []}
%{"Adolfo" => 10, "Neto" => 20}
Map.keys(%{"Adolfo" => 10, "Neto" => 20})
Map.values(%{"Adolfo" => 10, "Neto" => 20})
Operadores
10 / 3
10 - 3
10 + 3 * 10
"ADOLFO " <> "NETO"
"ADOLFO" == "adolfo"
"ADOLFO" == "ADOLFO"
Funções
String.upcase("adolfo neto")
"ADOLFO" == String.upcase("adolfo")
String.capitalize("adolfo neto")
String.at("Adolfo", 3)
Criar suas próprias funções
defmodule Urna do
def vota(nome_pessoa_candidata) do
{nome_pessoa_candidata}
end
def vota(urna, numero, nome) do
[{numero, nome} | urna]
end
def resultado(urna) do
urna
|> Enum.map(fn {_numero, pessoa} -> pessoa end)
|> Enum.frequencies()
|> Map.to_list()
end
def mostra_vencedor(lista) do
{nome_vencedor, votos_vencedor} = Enum.max_by(lista, fn {_nome, votos} -> votos end)
"A pessoa vencedora da eleição foi #{nome_vencedor} com #{votos_vencedor} votos."
end
end
Urna.vota("José Valim")
Urna.vota("Joe Armstrong")
Urna.vota([], 26, "Robert Virding")
minha_urna = []
minha_urna = Urna.vota(minha_urna, 26, "Robert Virding")
minha_urna = Urna.vota(minha_urna, 177, "José Valim")
minha_urna = Urna.vota(minha_urna, 199, "Joe Armstrong")
minha_urna = Urna.vota(minha_urna, 255, "Mike Williams")
minha_urna = Urna.vota(minha_urna, 177, "José Valim")
[]
|> Urna.vota(26, "Robert Virding")
|> Urna.vota(177, "José Valim")
|> Urna.vota(199, "Joe Armstrong")
|> Urna.vota(255, "Mike Williams")
|> Urna.vota(177, "José Valim")
[]
|> Urna.vota(26, "Robert Virding")
|> Urna.vota(177, "José Valim")
|> Urna.vota(199, "Joe Armstrong")
|> Urna.vota(255, "Mike Williams")
|> Urna.vota(177, "José Valim")
|> dbg()
Calculando quem ganhou (depois que a eleição termina)
[]
|> Urna.vota(26, "Robert Virding")
|> Urna.vota(177, "José Valim")
|> Urna.vota(199, "Joe Armstrong")
|> Urna.vota(255, "Mike Williams")
|> Urna.vota(177, "José Valim")
|> Urna.vota(167, "Grace Hopper")
|> Urna.resultado()
|> Urna.mostra_vencedor()
|> dbg()
Funções do Módulo Enum
defmodule Matematica do
def dobro(x) do
x * 2
end
end
Enum.map([10, 2, 45], &Matematica.dobro/1)
Enum.map([10, 2, 45], fn x -> x * 2 end)
Enum.map([10, 2, 45], &(&1 * 2))