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

dnovais

Diego Novais

Posted on March 17, 2021

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

💖 💪 🙅 🚩
dnovais
Diego Novais

Posted on March 17, 2021

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

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

March 17, 2021