Criando e acessando arrays
Um array guarda vários valores em uma variável
Todo valor até aqui, um número, uma string ou um booleano, viveu sozinho na própria variável. Um array guarda uma lista ordenada de valores sob um nome só.
fruits = ["apple", "banana", "cherry"]
scores = [88, 95, 72, 100]
mixed = ["Ada", 36, true]
empty = []
Colchetes, [...], são o literal de array. Vírgulas separam os elementos, e um array pode misturar tipos: mixed guarda uma string, um inteiro e um booleano.
Cada elemento tem uma posição
O Ruby numera posições a partir de 0, não de 1. Isso pega quase todo mundo no começo: o primeiro elemento fica no índice 0, o segundo no 1, e assim por diante.
fruits = ["apple", "banana", "cherry"]
fruits[0] # => "apple"
fruits[1] # => "banana"
fruits[2] # => "cherry"
fruits[3] # => nil, não existe um quarto elemento
Ler além do fim não gera erro; devolve nil. É o mesmo nil discreto das variáveis de instância não definidas em Variáveis e atribuição.
Índices negativos contam a partir do fim
Índices negativos contam para trás a partir do último elemento.
fruits = ["apple", "banana", "cherry"]
fruits[-1] # => "cherry", o último elemento
fruits[-2] # => "banana", o penúltimo
fruits[-10] # => nil, ainda fora dos limites, só que pelo outro lado
fruits[-1] para "o último elemento" está em todo código real. Lê melhor que calcular fruits[fruits.length - 1].
first, last, length e size
Quatro métodos respondem as perguntas comuns sem índice.
fruits = ["apple", "banana", "cherry"]
fruits.first # => "apple"
fruits.last # => "cherry"
fruits.length # => 3
fruits.size # => 3, um alias exato de length
Num Array, length e size são dois nomes do mesmo método, então qualquer um serve. size é o mais comum na prática: o próprio código desta aplicação e o código do Rails o usam cerca de duas vezes mais que length.
Uma ressalva para depois, já que esta série vai para o Rails. Eles são apelidos num Array, mas não em todo lugar. Numa relation do ActiveRecord, size usa uma contagem já carregada ou roda uma query COUNT(*), enquanto length carrega todos os registros na memória para contar. Num array comum não faz diferença, mas é um bom hábito para criar agora.
Pontos-chave
- Um literal de array se escreve com colchetes e valores separados por vírgula:
[1, 2, 3]. - Elementos são indexados começando em
0, não em1; ler além do fim retornanilem vez de gerar um erro. - Índices negativos contam para trás a partir do fim:
-1é o último elemento,-2é o penúltimo. firstelastleem as pontas sem calcular um índice;lengthesizesão aliases exatos numArray: mas não numa relation do ActiveRecord, ondesizeconta elengthcarrega.
Continue com a aula 2
Adicionando e removendo elementos
Adicionar e remover elementos nas duas pontas com push, <<, pop, unshift e shift, que alteram o array original.
Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.