Introdução
Um array é uma estrutura de dados que representa uma lista de valores, chamados de elementos. Arrays permitem que você armazene múltiplos valores em uma única variável. Em Ruby, arrays podem conter qualquer tipo de dados, 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ê irá 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á olhando 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 é prolixa 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 controlar uma variável adicional.
Se você usar um array, pode 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 — []
— para criar uma matriz e separou cada entrada com uma vírgula. Se você tivesse que adicionar um tubarão adicional, adicionaria outro tubarão à matriz em vez de criar e gerenciar uma nova variável.
Você pode imprimir toda a matriz com o comando 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, você pode usar a sintaxe %w{}
, que cria uma matriz de palavras:
days = %w{Monday Tuesday Wednesday Thursday Friday Saturday Sunday}
Isto é equivalente a criar a matriz com colchetes:
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 você verá como acessar dados armazenados em matrizes.
Acessando Itens em Matrizes
Para acessar um item específico, ou elemento de uma matriz, você referencia seu índice, ou sua posição na matriz. Em Ruby, os índices começam em zero. Para recuperar o primeiro elemento de 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é que se torne natural.
Nota: Pode ajudar a pensar no índice como um deslocamento, significando o número de lugares 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 um local de distância da primeira entrada na matriz, então seu deslocamento, ou índice, é 1
.
Você pode descobrir quantos elementos há 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 de forma alguma.
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
Isto 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"
Tentar acessar um índice que não existe retornará nil
:
sharks[10]
Outputnil
Arrays podem conter outros arrays, 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"]
. Você então acessou os elementos na posição 0
desse array, que era "coral"
.
Agora vamos 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ê pode 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 é 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"]
A tentativa de acessar o elemento adicional no 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 no 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 olhar para 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, você vai se 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 imprima o array:
sharks.delete_at(4)
print sharks
Output["Angel", "Hammerhead", "Great White", "Tiger", "Whale", "Thresher", "Bullhead"]
O método delete
remove elementos de uma matriz que correspondem ao valor fornecido. Use-o para remover Whale
da matriz:
sharks.delete("Whale")
print sharks;
Output["Angel", "Hammerhead", "Great White", "Tiger", "Thresher", "Bullhead"]
O método delete
removerá todas as ocorrências do valor fornecido, portanto, se sua matriz tiver elementos duplicados, todos serão removidos.
O método pop
removerá o último elemento de uma matriz:
sharks.pop
print sharks;
Output["Angel", "Hammerhead", "Great White", "Tiger", "Thresher"]
Bullhead
foi removido como o último elemento da matriz. Para remover o primeiro elemento da matriz, use o método shift
:
sharks.shift
print sharks
Output["Hammerhead", "Great White", "Tiger", "Thresher"]
Desta vez, Angel
foi removido do início da matriz.
Usando os métodos pop
e shift
, você pode remover elementos do início e do final das matrizes. O uso de pop
é preferível sempre que possível, pois os demais itens na matriz mantêm seus números de índice originais.
Os métodos delete_at
, pop
e shift
alteram a matriz original e retornam o elemento deletado::
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ê conhece várias maneiras de remover elementos de uma matriz. Agora, vamos ver como modificar o elemento que você já possui.
Modificando Elementos Existentes em Matrizes
Para atualizar um elemento na matriz, atribua um novo valor ao índice do elemento usando o operador de atribuição, assim como você 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 correto, você pode usar o método index
para localizar o elemento primeiro, assim como fez para encontrar o elemento que desejava excluir.
Agora, vamos ver como trabalhar com todos os elementos no array.
Iterando sobre Arrays
O Ruby fornece muitas maneiras de iterar sobre um array, e o método que você usa depende do tipo de trabalho que deseja realizar. Em seguida, exploraremos 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
com muita frequência. Os arrays do Ruby são objetos e 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
, cercada pelos caracteres de tubo (|
), é 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 substituírem as palavras-chave do
e end
por chaves e condensarem 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 fornece 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. Finalmente, você explorou duas maneiras de iterar sobre um array e exibir seu conteúdo, que é usada como um método comum para exibir dados.
Aprenda sobre 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