Arrays

Arrays em Ruby são instâncias da classe Array, não sendo simplesmente uma estrutura de dados, mas possuindo diversos métodos auxiliares que nos ajudam a trabalhar com elas.

Entenda Array como uma coleção, ou lista, de objetos, por exemplo.

lista = Array.new
# equivale a lista = []

lista << "Maça"
lista << "Manga"
lista << "Melancia"

puts lista.size
# => 3

O símbolo << é o append. Ele "insere" um elemento num Array, assim como concatena uma string numa outra string.

Podemos declarar a mesma Array em uma só linha:

lista = ["Maça", "Manga", "Melancia"]

A tarefa mais comum ao interagir com Array é a de resgatar os elementos. Podemos fazer isso usando [] e passando um índice como parâmetro.

puts lista[1]
# => "Manga"
puts lista[0]
# => "Maça"
Múltiplos parâmetros

Caso queiramos passar vários elementos como parâmetro de um método, a primeira ideia que surge é listar todos na definição do método:

def compra(produto1, produto2, produto3, produtoN)
end

Porém, caso o número de elementos seja muito grande o código pode ficar muito extenso. Caso o número de elementos seja desconhecido, não dá para se trabalhar dessa forma.

Para resolver esses problemas, podemos usar o operador splat * nos parâmetros do método e passar um Array:

def compra(*produtos)
  puts produtos.size
end

compra(["Borracha", "Lápis", "Caneta"])
# => 3

Devemos passar como parâmetro um Array.