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.