Elixir - Tipos de Dados
Para usar qualquer idioma, você precisa entender os tipos de dados básicos que o idioma suporta. Neste capítulo, discutiremos 7 tipos de dados básicos suportados pela linguagem elixir: inteiros, flutuantes, booleanos, átomos, strings, listas e tuplas.
Tipos Numéricos
Elixir, como qualquer outra linguagem de programação, suporta números inteiros e flutuantes. Se você abrir seu shell elixir e inserir qualquer número inteiro ou flutuante como entrada, ele retornará seu valor. Por exemplo,
42
Quando o programa acima é executado, ele produz o seguinte resultado -
42
Você também pode definir números em bases octais, hexadecimais e binárias.
Octal
Para definir um número na base octal, prefixe-o com '0o'. Por exemplo, 0o52 em octal é equivalente a 42 em decimal.
Hexadecimal
Para definir um número na base decimal, prefixe-o com '0x'. Por exemplo, 0xF1 em hexadecimal é equivalente a 241 em decimal.
Binário
Para definir um número em base binária, prefixe-o com '0b'. Por exemplo, 0b1101 em binário é equivalente a 13 em decimal.
Elixir suporta precisão dupla de 64 bits para números de ponto flutuante. E eles também podem ser definidos usando um estilo de exponenciação. Por exemplo, 10145230000 pode ser escrito como 1.014523e10
Átomos
Os átomos são constantes cujo nome é seu valor. Eles podem ser criados usando o símbolo de cor (:). Por exemplo,
:hello
Booleanos
Elixir suporta true e falsecomo booleanos. Ambos os valores estão de fato ligados aos átomos: true e: false respectivamente.
Cordas
Strings em Elixir são inseridas entre aspas duplas e são codificadas em UTF-8. Eles podem se estender por várias linhas e conter interpolações. Para definir uma string basta inseri-la entre aspas duplas -
"Hello world"
Para definir strings de várias linhas, usamos uma sintaxe semelhante a python com aspas duplas triplas -
"""
Hello
World!
"""
Aprenderemos mais sobre strings, binários e listas de caracteres (semelhantes a strings) no capítulo de strings.
Binários
Binários são sequências de bytes entre << >> separados por uma vírgula. Por exemplo,
<< 65, 68, 75>>
Os binários são usados principalmente para lidar com dados relacionados a bits e bytes, se houver algum. Eles podem, por padrão, armazenar de 0 a 255 em cada valor. Esse limite de tamanho pode ser aumentado usando a função de tamanho que diz quantos bits devem ser necessários para armazenar esse valor. Por exemplo,
<<65, 255, 289::size(15)>>
Listas
Elixir usa colchetes para especificar uma lista de valores. Os valores podem ser de qualquer tipo. Por exemplo,
[1, "Hello", :an_atom, true]
As listas vêm com funções embutidas para início e fim da lista denominadas hd e tl que retornam o início e o fim da lista, respectivamente. Às vezes, quando você cria uma lista, ele retorna uma lista de caracteres. Isso ocorre porque quando o elixir vê uma lista de caracteres ASCII imprimíveis, ele a imprime como uma lista de caracteres. Observe que strings e listas de caracteres não são iguais. Discutiremos as listas mais adiante em capítulos posteriores.
Tuplas
Elixir usa chaves para definir tuplas. Como as listas, as tuplas podem conter qualquer valor.
{ 1, "Hello", :an_atom, true
Uma questão surge aqui, - por que fornecer ambos lists e tuplesquando ambos trabalham da mesma maneira? Bem, eles têm implementações diferentes.
As listas são, na verdade, armazenadas como listas vinculadas, portanto, as inserções e exclusões são muito rápidas nas listas.
Já as tuplas são armazenadas em blocos contíguos de memória, o que torna o acesso a elas mais rápido, mas adiciona um custo adicional nas inserções e exclusões.