Aprendendo Elixir: Tipos de Dados em Elixir
O texto abaixo é sobre a linguagem de programação Elixir. Se você não sabe do que se trata, leia a entrada na Wikipédia sobre a linguagem.
No texto de hoje iremos começar a falar dos Tipos de Dados em Elixir. Estou seguindo o livro Programming in Elixir 1.3, de Dave Thomas. Para instalar Elixir, acesse as instruções de instalação para seu sistema operacional na página oficial da linguagem.
Atualização em 16/07/2021: os sites abaixo não existem mais. Uma outra opção é tentar executar o Elixir no browser mesmo, como em http://elixirplayground.com/ ou http://tryelixir.online/. Mas estes sites não necessariamente contém a versão mais recente da linguagem.
Mas você pode usar o repl.it!
Então vamos começar com os tipos. Os tipos nativos (built-in) do Elixir são:
- Tipos Valor
- Tipos de Sistema
- Tipos Coleção
Os tipos valor se classificam em:
- Inteiros de tamanho arbitrário
- Números de ponto flutuante
- Átomos
- Faixas de valores
- Expressões regulares
Exercício: Abrir o iex (Elixir interativo) e digitar o conteúdo em preto, após “iex (..)>”, da tela abaixo no iex:
O operador “=” é um operador de casamento de padrão.
“x=1" faz com que x seja ligado a 1, um número inteiro.
“y = 2.0” faz com que y seja ligado a 2.0, um número de ponto flutuante.
“x+y” solicita ao iex a soma dos valores ligados a x e y. Como o tipo mais amplo é o de número de ponto flutuante, o resultado é apresentado como sendo de ponto flutuante.
“:elixir” define um átomo (:elixir). O valor de um átomo é sempre ele próprio. É uma constante. São usados para marcar valores.
“z = 1..3” define z como sendo a sequência que começa em 1 e termina em 3. Logo, contém 1, 2 e 3.
Como “re = ~r{[aeiou]}” definimos uma expressão regular re como sendo uma expressão que aceita as vogais minúsculas. Ao solicitar, com
Regex.run re, “abecedario”
o primeiro caractere que satisfaz a expressão regular re, “a” é retornado.
Já se o pedido ao iex for:
Regex.run re, “xyz”
será retornado “nil”, significando que não há nenhuma vogal minúscula na string “xyz”.
Não falamos de strings ainda, não é?
Não falamos por não se tratar de um Tipo Valor (Value Type).