DEV Community

Diego Novais
Diego Novais

Posted on • Edited on

5

{"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

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

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.

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay