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.