DEV Community

Diego Novais
Diego Novais

Posted on • Edited on

{"O", "que", "é", 1, :tupla, "?"}

Quando vi uma {"tupla"} em Elixir pensei que seria um hash como em ruby ou Object em Javascript, pensei também que talvez seria apenas mais um nome para o hash | object, mas assim como list não é um array, uma Tupla não é um hash | object.

O que é uma Tupla (Tuple)?

Tupla é uma estrutura de dados que assim como a List permite tipos diferentes de dados, como no exemplo:

{:atom, "string", 1, 2.5} 
Enter fullscreen mode Exit fullscreen mode

As tuplas são armazenadas continuamente (uma seguida da outra) na memória (semelhante aos Arrays em outras linguagens).

É importante saber que...

Normalmente as tuplas são usadas em retorno de uma função, quando sucesso:

defmodule Example do def say(name), do: {:ok, "Hey #{name}, I am here!"} end 
Enter fullscreen mode Exit fullscreen mode

ou quando for um erro:

defmodule Example do # ... def say(nil), do: {:error, "The name can`t be blank!"} end 
Enter fullscreen mode Exit fullscreen mode
  • O acesso a qualquer elemento leva um tempo constante, mas a modificação de uma tupla, que produz uma cópia superficial, leva um tempo linear.
  • As funções Enum não funcionam em tuplas.
  • Tuplas não são uma coleção de elementos.
  • As funcões de módulo das tuplas raramente são usadas pois as tuplas são containers de tamanho fixo para vários elementos.
  • Ao manipular uma tupla usando suas funções de módulo faz com que as tuplas sejam usadas como coleções.
# Insere um elemento no final da Tupla. # append/2 (Função de aridade 2) append(tuple, value) # Remove um elemento de uma Tupla. # delete_at/2 (Função de aridade 2) delete_at(tuple, index) # Cria uma nova Tupla. # duplicate/2 (Função de aridade 2) duplicate(data, size) # Insere uma elemento em uma determinada posição da Tupla. # insert_at/3 (Função de aridade 3) insert_at(tuple, index, value) # Converte uma Tuplara para uma List. # to_list/1 (Função de aridade 1) to_list(tuple) 
Enter fullscreen mode Exit fullscreen mode

Obs.: Caso queira saber o que é Aridade de uma função eu escrevi um artigo sobre Aridade de uma função.

Para manipular uma coleção de elementos, use uma lista.

Conclusão sobre as Tuplas

Uma Tupla é uma estrutura de dados que permite elementos de vários tipos assim como uma List.

São semelhante a um array, onde seus elementos são armazenados continuamente na memória.

Existem vários detalhes de implementação que precisamos entender para usá-las corretamente.

Contato:
Email: contato@diegonovais.com.br
LinkedIn: https://www.linkedin.com/in/diegonovais/
Github: https://github.com/dnovais

Top comments (2)

Collapse
 
eduardoklosowski profile image
Eduardo Klosowski

É sempre bom conhecer várias estruturas de dados para poder aplicar aquela que irá melhor ajudar a resolver o problema.

Collapse
 
dnovais profile image
Diego Novais • Edited

Com toda certeza!
Quando entendemos os fundamentos nosso dia a dia como desenvolvedor fica mais fácil.
E meu objetivo é exatamente esse, masterizar os fundamentos e compartilhar tudo que estou aprendendo, e assim quem sabe eu consiga ajudar outros desenvolvedores na comunidade.