DEV Community

Diego Novais
Diego Novais

Posted on

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.

Discussion (0)