Introdução
Um array é uma estrutura de dados que representa uma lista de valores, chamados de elementos. Arrays permitem que você armazene vários valores em uma única variável. Em Ruby, arrays podem conter qualquer tipo de dado, incluindo números, strings e outros objetos Ruby. Isso pode condensar e organizar seu código, tornando-o mais legível e mantível. Todos os arrays são objetos com seus próprios métodos que você pode chamar, fornecendo uma maneira padronizada de trabalhar com conjuntos de dados.
Neste tutorial, você criará arrays, acessará os valores que eles contêm, adicionará, modificará e removerá elementos em um array e iterará pelos elementos em um array para resolver problemas mais complexos.
Criando um Array
Você começará examinando como criar arrays com mais detalhes. Como exemplo, aqui está uma lista de várias espécies de tubarões. Sem um array, você poderia armazená-los em variáveis individuais:
shark1 = "Hammerhead"
shark2 = "Great White"
shark3 = "Tiger"
Esta abordagem é verbosa e pode se tornar rapidamente difícil de manter, pois não é muito flexível. Adicionar outro tubarão significa que você teria que adicionar e rastrear uma variável adicional.
Se você usar um array, poderá simplificar esses dados. Para criar um array em um programa Ruby, use colchetes: ([]
), e separe os valores que deseja armazenar com vírgulas:
sharks = ["Hammerhead", "Great White", "Tiger"]
Em vez de criar três variáveis separadas, agora você tem uma variável que contém todos os três tubarões. Neste exemplo, você usou colchetes quadrados — []
— para criar uma matriz e separou cada entrada com uma vírgula. Se você precisasse adicionar um tubarão adicional, adicionaria outro tubarão à matriz em vez de criar e gerenciar uma nova variável.
Você pode imprimir uma matriz inteira com a instrução print
, que exibirá o conteúdo da matriz:
print sharks
Output["Hammerhead", "Great White", "Tiger"]
Se você quiser criar uma matriz onde cada entrada é uma única palavra, pode usar a sintaxe %w{}
, que cria uma matriz de palavras:
days = %w{Monday Tuesday Wednesday Thursday Friday Saturday Sunday}
Isso é equivalente a criar a matriz com colchetes quadrados:
days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
No entanto, observe que o método %w{}
permite que você pule as aspas e as vírgulas.
As matrizes são frequentemente usadas para agrupar listas de tipos de dados semelhantes, mas em Ruby, as matrizes podem conter qualquer valor ou uma mistura de valores. Isso inclui outras matrizes. Aqui está um exemplo de uma matriz que contém uma string, um valor nil
, um inteiro e uma matriz de strings:
record = [
"Sammy",
null,
7,
[
"another",
"array",
]
]
Agora vamos ver como acessar dados armazenados em matrizes.
Acessando Itens em Matrizes
Para acessar um item específico, ou elemento de uma matriz, você referencia o seu índice, ou sua posição na matriz. Em Ruby, os índices começam em zero. Para recuperar o primeiro elemento da sua matriz sharks
, você anexa o índice do elemento à variável usando colchetes angulares:
sharks = ["Hammerhead", "Great White", "Tiger"]
A matriz sharks
tem três elementos. Aqui está uma explicação de como cada elemento na matriz sharks
é indexado.
Hammerhead | Great White | Tiger |
---|---|---|
0 | 1 | 2 |
O primeiro elemento na matriz é Hammerhead
, que está indexado em 0
. O último elemento é Tiger
, que está indexado em 2
. A contagem começa com 0
nos índices, o que vai contra a intuição natural de começar a contar em 1, então é bom ter isso em mente até se tornar natural.
Nota: Pode ajudar a pensar no índice como um deslocamento, ou seja, o número de posições a partir do início da matriz. O primeiro elemento está no início, então seu deslocamento, ou índice, é 0
. O segundo elemento está a uma posição de distância da primeira entrada na matriz, então seu deslocamento, ou índice, é 1
.
Você pode descobrir quantos elementos existem em uma matriz com o método length
:
sharks.length
Output3
Embora os índices de sharks
comecem em 0
e vão até 2
, a propriedade length
retorna o número de elementos na matriz, que é 3
. Não se preocupa com os índices em absoluto.
Se você quisesse descobrir o número do índice de um elemento específico em uma matriz, como Tiger
, use o método index()
:
print sharks.index("Tiger")
Output2
Isso retorna o índice do primeiro elemento que contém esse texto. Se um número de índice não for encontrado, como para um valor que não existe, o console retornará nil
:
print sharks.index("Whale")
Outputnil
Para obter o último elemento de um array em Ruby, use o índice -1
:
print sharks[-1]
Output"Tiger"
O Ruby também fornece os métodos first
e last
para obter os primeiros e últimos elementos sem usar índices:
puts sharks.first
puts sharks.last
Output"Hammerhead"
"Tiger"
A tentativa de acessar um índice que não existe retornará nil
:
sharks[10]
Outputnil
Arrays podem conter outros arrays, que são chamados de arrays aninhados. Esta é uma maneira de modelar conjuntos de dados bidimensionais em um programa. Aqui está um exemplo de um array aninhado:
nested_array = [
[
"salmon",
"halibut",
],
[
"coral",
"reef",
]
]
Para acessar elementos em um array aninhado, você adicionaria outro número de índice correspondente ao array interno. Por exemplo, para recuperar o valor coral
deste array aninhado, você usaria a seguinte declaração:
print nested_array[1][0];
Outputcoral
Neste exemplo, você acessou o array na posição 1
da variável nested_array
, que retornou o array ["coral", "reef"]
. Em seguida, você acessou os elementos na posição 0
desse array, que era "coral"
.
Agora você verá como adicionar elementos a um array.
Adicionando Elementos a Arrays
Você tem três elementos em seu array sharks
, que são indexados de 0
a 2
:
sharks = ["Hammerhead", "Great White", "Tiger"]
Existem algumas maneiras de adicionar um novo elemento. Você poderia atribuir um valor ao próximo índice, que neste caso seria 3
:
sharks[3] = "Whale";
print sharks
Output["Hammerhead", "Great White", "Tiger", "Whale"]
Este método, porém, é propenso a erros. Se você adicionar um elemento e acidentalmente pular um índice, ele criará um elemento nil
no array.
sharks[5] = "Sand";
print sharks;
Output["Hammerhead", "Great White", "Tiger", "Whale", nil, "Sand"]
Tentar acessar o elemento extra do array retornará seu valor, que será nil
:
sharks[4]
Outputnil
Encontrar o próximo índice disponível em um array é propenso a erros e leva tempo extra. Evite erros usando o método push
, que adiciona um elemento ao final de um array:
sharks.push("Thresher")
print sharks
Output["Hammerhead", "Great White", "Tiger", "Whale", nil, "Whale", "Thresher"]
Você também pode usar a sintaxe <<
em vez do método push
para adicionar um elemento ao final de um array:
sharks << "Bullhead"
Output["Hammerhead", "Great White", "Tiger", "Whale", nil, "Whale", "Thresher", "Bullhead"]
Para adicionar um elemento ao início de um array, use o método unshift()
:
sharks.unshift("Angel")
print sharks
Output["Angel", "Hammerhead", "Great White", "Tiger", "Whale", nil, "Whale", "Thresher", "Bullhead"]
Agora que você sabe como adicionar elementos, vamos ver como removê-los.
Removendo Elementos de Arrays
Para remover um elemento específico de um array, use os métodos delete
ou delete_at
. No array sharks
, você criou um elemento de array nil
anteriormente. Agora, vamos nos livrar dele.
Primeiro, encontre sua posição no array. Você pode usar o método index
para fazer isso:
print sharks.index(nil)
Output4
Em seguida, use delete_at
para remover o elemento no índice 4
e imprimir o array:
sharks.delete_at(4)
print sharks
Output["Angel", "Hammerhead", "Great White", "Tiger", "Whale", "Thresher", "Bullhead"]
O método delete
remove elementos de um array que correspondem ao valor que você passa. Use-o para remover Baleia
do array:
sharks.delete("Whale")
print sharks;
Output["Angel", "Hammerhead", "Great White", "Tiger", "Thresher", "Bullhead"]
O método delete
removerá todas as ocorrências do valor que você passa, então se seu array tiver elementos duplicados, todos serão removidos.
O método pop
removerá o último elemento de um array:
sharks.pop
print sharks;
Output["Angel", "Hammerhead", "Great White", "Tiger", "Thresher"]
Peixe-gato
foi removido como o último elemento do array. Para remover o primeiro elemento do array, use o método shift
:
sharks.shift
print sharks
Output["Hammerhead", "Great White", "Tiger", "Thresher"]
Desta vez, Anjo
foi removido do início do array.
Ao usar pop
e shift
, você pode remover elementos do início e do final dos arrays. Usar pop
é preferível sempre que possível, pois os demais itens no array mantêm seus números de índice originais.
Os métodos delete_at
, pop
e shift
alteram o array original e retornam o elemento que você deletou::
sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
deleted_at_element = sharks.delete_at(1)
popped_element = sharks.pop
puts "Deleted_at element: #{deleted_at_element}"
puts "Popped element: #{popped_element}"
puts "Remaining array: #{sharks}"
OutputDeleted_at element: Great White
Popped element: Whale
Remaining array: ["Hammerhead", "Tiger"]
Agora você sabe várias maneiras de remover elementos de um array. Agora você verá como modificar o elemento que já possui.
Modificando Elementos Existente em Arrays
Para atualizar um elemento no array, atribua um novo valor ao índice do elemento usando o operador de atribuição, assim como faria com uma variável regular.
Dado um novo array de tubarões, com "Hammerhead"
no índice 0
, você substituirá "Hammerhead"
por "Angel"
:
sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
sharks[0] = "Angel"
print sharks;
Output["Angel", "Great White", "Tiger", "Whale"]
Para garantir que você atualize o elemento certo, você pode usar o método index
para localizar o elemento primeiro, assim como fez para encontrar o elemento que queria excluir.
Agora você vai aprender como trabalhar com todos os elementos no array.
Iterando Sobre Arrays
O Ruby oferece muitas maneiras de iterar sobre um array, e cada método que você usar depende do tipo de trabalho que deseja realizar. Em seguida, você vai explorar como iterar sobre um array e exibir cada um de seus elementos.
O Ruby fornece a sintaxe for..in
:
sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
for shark in sharks do
puts shark
end
Para cada elemento no array sharks
, o Ruby atribui esse elemento à variável local shark
. Você pode então imprimir o valor do elemento usando puts
.
Você não verá for..in
muito frequentemente, no entanto. Os arrays do Ruby são objetos, e eles fornecem o método each
para trabalhar com elementos. O método each
funciona de maneira semelhante ao for..in
, mas tem uma sintaxe diferente:
sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
sharks.each do |shark|
puts shark
end
O método each
utiliza uma sintaxe que você verá frequentemente na programação Ruby. Ele recebe um bloco Ruby como argumento. Um bloco é algum código que será executado posteriormente no contexto do método. Neste caso, o código é puts shark
. A palavra-chave shark
, entre os caracteres de pipe (|
), é a variável local que representa o elemento no array que o bloco acessará. Ruby atribui o elemento a esta variável e executa o código no bloco. O método each
repete este processo para cada elemento no array:
OutputHammerhead
Great White
Tiger
Whale
Quando o bloco é apenas uma única linha, frequentemente você verá desenvolvedores Ruby substituindo as palavras-chave do
e end
por chaves e condensando toda a declaração em uma única linha:
...
sharks.each {|shark| puts shark }
Isso produz os mesmos resultados, mas utiliza menos linhas de código.
O método each_with_index
funciona de maneira semelhante, mas também dá acesso ao índice do elemento no array. Este programa utiliza each_with_index
para imprimir o índice e o valor de cada elemento:
sharks = ["Hammerhead", "Great White", "Tiger", "Whale"]
sharks.each_with_index do |shark, index|
puts "The index is #{index}"
puts "The value is #{shark}"
end
Para cada elemento no array, Ruby atribui o elemento à variável shark
e o índice atual à variável index
. Você pode então referenciar ambas as variáveis no bloco.
OutputThe index is 0
The value is Hammerhead
The index is 1
The value is Great White
The index is 2
The value is Tiger
The index is 3
The value is Whale
Você iterará frequentemente sobre os elementos em um array em seus próprios programas, como quando precisa exibir os itens de um banco de dados em um site, ou quando está lendo linhas de um arquivo e processando seu conteúdo.
Conclusão
Arrays são uma parte extremamente versátil e fundamental da programação em Ruby. Neste tutorial, você criou arrays e acessou elementos individuais. Você também adicionou, removeu e modificou elementos em um array. Por fim, explorou duas maneiras de iterar sobre um array e exibir seu conteúdo, o que é usado como um método comum para mostrar dados.
Conheça outros tipos de dados em Ruby lendo o tutorial Compreendendo Tipos de Dados em Ruby.
Source:
https://www.digitalocean.com/community/tutorials/how-to-work-with-arrays-in-ruby