DEV Community

Diego Novais
Diego Novais

Posted on • Edited on

5 1

Array em Ruby

O que é um array?

De forma bem simples e direta, um Array é uma coleção de dados.

Na linguagem de programação Ruby um Array pode conter objetos como String, Integer, Fixnum, Hash, Symbol e até mesmo outros Arrays.

Em linguagens como Java e C, você deve declarar explicitamente o tamanho de um array.

Em Ruby, diferente de outras linguagens os arrays crescem automaticamente ao adicionar elementos a eles. Dessa forma não é necessário definir o tamanho de um array.

É importante saber que podemos por exemplo, acessar um elemento em um array por meio do seu índice.

O que é um índice em um Array?

Um índice é a posição de um elemento referente a um array.

Posicionamento em um array

Ou seja, quando precisamos por exemplo acessar diretamente o terceiro elemento de um array, uma das formas de se fazer isso em Ruby seria passar o index 2:

> x = [7, 5, 3, 4]
> x[2]
> 3
Enter fullscreen mode Exit fullscreen mode

Detalhes importantes sobre Arrays em ruby

  • Os arrays são colocados em colchetes;
  • Eles são dinâmicos, ou seja, crescem automaticamente quando são acrescentados elementos;
  • Se somarmos dois arrays obteremos um novo array, porém maior (alocado em memória) em vez de fazer aritmética de ponteiros.

Manipulando - Array

Imagine o seguinte cenário, estamos em um supermercado fazendo compras, pegamos um carrinho de compras, dessa forma o carrinho de será o nosso array…

- Criando um array

Primeiramente vamos criar um array vazio (no caso um carrinho de compras vazio):

cart = []
=> []
Enter fullscreen mode Exit fullscreen mode

- Usando o método empty?

Vamos conferir se o nosso carrinho de compras (o array) esta de fato vazio?

cart.empty?
=> true
Enter fullscreen mode Exit fullscreen mode

De fato, como podemos perceber, nosso carrinho esta vazio!

Então vamos às compras...

- Adicionando itens em um Array

Precisamos adicionar alguns itens ao nosso carrinho de compras, e para isso vamos usar o método push:**

cart.push('Arroz')
=> ["Arroz"]

cart.push('Banana')
=> ["Arroz", "Banana"]

cart.push('Farinha de Trigo')
=> ["Arroz", "Banana", "Farinha de Trigo"]

cart.push('Feijão')
=> ["Arroz", "Banana", "Farinha de Trigo", "Feijão"]
Enter fullscreen mode Exit fullscreen mode

- Adicionando itens em uma determinada posição de um Array

Vamos colocar mais 2 itens na primeira posição do nosso carrinho (array)?

cart.insert(0, 'Abóbora', 'Abacaxi')
=> ["Abóbora", "Abacaxi", "Arroz", "Banana", "Farinha de Trigo", "Feijão"]
Enter fullscreen mode Exit fullscreen mode

- Verificando o array:

Vamos verificar como ficou nosso carrinho de compras:

cart
=> ["Abóbora", "Abacaxi", "Arroz", "Banana", "Farinha de Trigo", "Feijão"]
Enter fullscreen mode Exit fullscreen mode

- Acessando alguns dos elementos do array (carrinho):

cart[0]
=> "Abóbora"

cart[2]
=> "Arroz"

cart[4]
=> "Farinha de Trigo"
Enter fullscreen mode Exit fullscreen mode

É possível acessar os itens do último para o primeiro

cart[-1]
=> "Feijão"

cart[-2]
=> "Farinha de Trigo"

cart[-3]
=> "Banana"

cart[-4]
=> "Arroz"
Enter fullscreen mode Exit fullscreen mode

- Acessando o primeiro elemento do array:

Podemos acessar o primeiro elemento do array das 2 formas a seguir...

cart[0]
=> "Abóbora"
Enter fullscreen mode Exit fullscreen mode

ou

cart.first
=> "Abóbora"
Enter fullscreen mode Exit fullscreen mode

- Acessando o último elemento do array:

Para acessar o último da lista podemos fazer das 2 formas a seguir:

cart[5]
=> "Feijão"
Enter fullscreen mode Exit fullscreen mode

ou

cart.last
=> "Feijão"
Enter fullscreen mode Exit fullscreen mode

Vamos conferir novamente se o array esta de fato vazio?

cart.empty?
=> false
Enter fullscreen mode Exit fullscreen mode

- Usando métodos para contar os elementos um array:

Vamos conferir quantos itens temos no carrinho...

cart.count
=> 6

cart.size
=> 6

cart.length
=> 6
Enter fullscreen mode Exit fullscreen mode

- Usando o método include?

Vamos verificar se não esquecemos do Arroz

cart.include?('Arroz')
=> true
Enter fullscreen mode Exit fullscreen mode
cart
=> ["Abóbora", "Abacaxi", "Arroz", "Banana", "Farinha de Trigo", "Feijão"]
Enter fullscreen mode Exit fullscreen mode

- Usando o método delete_at

Ficou muito caro vamos remover o quarto item

cart.delete_at(3)
=> "Banana"
Enter fullscreen mode Exit fullscreen mode
cart
=> ["Abóbora", "Abacaxi", "Arroz", "Farinha de Trigo", "Feijão"]
Enter fullscreen mode Exit fullscreen mode

- Usando o método pop para remover o último item do array:

Resolvemos excluir o último item

cart.pop
=> "Feijão"

cart
=> ["Abóbora", "Abacaxi", "Arroz", "Farinha de Trigo"]
Enter fullscreen mode Exit fullscreen mode

- Usando o método shift para remover o primeiro item do array:

Vamos excluir o primeiro?

cart.shift
=> "Abóbora"

cart
=> ["Abacaxi", "Arroz", "Farinha de Trigo"]
Enter fullscreen mode Exit fullscreen mode

Iteração - Array

Vamos iterar (percorrer) no array utilizando os métodos de iteração:

Primeiramente vamos criar um novo array:

cart = ['Arroz', 'Banana', 'Farinha de Trigo', 'Feijão']
=> ["Arroz", "Banana", "Farinha de Trigo", "Feijão"]
Enter fullscreen mode Exit fullscreen mode

Usando o each para iterar o array

Com o each conseguimos percorrer cada item do nosso array.

cart.each do |item|
  puts item
end

Arroz
Banana
Farinha de Trigo
Feijão
=> ["Arroz", "Banana", "Farinha de Trigo", "Feijão"]
Enter fullscreen mode Exit fullscreen mode

Usando o método map

Vamos usar o map?

numbers = [2, 6, 8, 9]
=> [2, 6, 8, 9]
Enter fullscreen mode Exit fullscreen mode

Quando usamos o map, um novo array é criado para que o nosso array numbers por ex. não seja alterado. Por isso estamos atribuindo esse novo array à variável sums.

sums = numbers.map do |n|
  n * 2
end
=> [4, 12, 16, 18]
Enter fullscreen mode Exit fullscreen mode
sums
=> [4, 12, 16, 18]
Enter fullscreen mode Exit fullscreen mode

Vamos manipular o array numbers sem que um novo array seja criado?

Ou seja, iremos sobrescrever o nosso array numbers com o novo array criado pelo map.

numbers = numbers.map{|n| n * 3}
=> [6, 18, 24, 27]
Enter fullscreen mode Exit fullscreen mode

No exemplo acima utilizamos o map inline.

numbers
=> [6, 18, 24, 27]
Enter fullscreen mode Exit fullscreen mode

Usando o método select

Selecionando items do array...

array = [1, 2, 3, 4, 5, 6]
=> [1, 2, 3, 4, 5, 6]
Enter fullscreen mode Exit fullscreen mode

Quando usamos o select, o select cria um outro array para que o nosso array por ex. não seja alterado. E por isso estamos atribuindo esse novo array à variável selection.

selection = array.select do |a|
  a >= 2
end
=> [2, 3, 4, 5, 6]
Enter fullscreen mode Exit fullscreen mode
selection
=> [2, 3, 4, 5, 6]
Enter fullscreen mode Exit fullscreen mode

Caso você precise saber mais detalhes sobre Array eu sugiro que dê uma olhada na documentação do Ruby que é bastante completa e tem vários exemplos.

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

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read more →

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up