Criando e acessando arrays

Prévia grátis 3 min de leitura

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 em 1; ler além do fim retorna nil em vez de gerar um erro.
  • Índices negativos contam para trás a partir do fim: -1 é o último elemento, -2 é o penúltimo.
  • first e last leem as pontas sem calcular um índice; length e size são aliases exatos num Array: mas não numa relation do ActiveRecord, onde size conta e length carrega.
Aula 1 de 7 · grátis

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.

Digite para buscar...