26 de setembro de 2006

O jeito Ruby (parte 2)

Continuando a série de grandes sacadas da linguagem Ruby e das coisas que realmente tornam a programação mais intuitiva, vou falar um pouco sobre como manipular listas em geral: array, lista encadeada, pilha, etc.

Primeiramente vamos pensar em uma lista genérica de elementos: 1,2,3,4,5. Para armazenar essa lista vamos usar uma variável da seguinte maneira:

lista = [1,2,3,4,5]

A variável lista agora é um objeto da classe Array que armazena uma lista de números (verifique isso usando lista.class).
Uma das operações básicas de uma lista qualquer é a sua varredura, acessar elemento por elemento e fazer alguma operação. Podemos fazer isso facilmente:

lista.each do |elem|
instruções
end

Um objeto da classe Array também pode se comportar como uma lista encadeada, a qual é dinâmica e pode ter elementos adicionados ou removidos em tempo de execução, para isso existem os seguintes métodos:

lista.insert(3,”yCode”)
[1, 2, 3, “yCode”, 4, 5]

lista.delete(2)
[1,3, “yCode”, 4, 5]

lista.delete_at(1)
[1, “yCode”, 4, 5]

Eu acredito que o exemplo mostra muito bem a função de cada método, mas mesmo assim vamos a uma explicação rápida: lista.insert(3,”yCode”), insere na posição 3 o objeto “yCode”, lista.delete(2), apaga o elemento 2, lista.delete_at(1), apaga o elemento na posição 1 do array.

Um objeto da classe array em Ruby ainda pode se comportar como uma pilha. Os métodos básicos de uma pilha são push e pop:

lista.pop
=> 5
[1, “yCode”, 4]

lista.push(1.5)
=> [1, “yCode”, 4, 1.5]

Existem dezenas de métodos para a classe Array, além desses apresentados temos os comuns, sort, fill, clear, reverse, e outros um pouco mais complexos. Para conhecer melhor todos os métodos vale a pena dar uma olhada na documentação da linguagem no site: www.ruby-doc.org/core.

Mais uma vez espero ter mostrado como Ruby tem uma estrutura muito bem bolada e ainda ter deixado claro o quanto é intuitivo toda a versatilidade da classe Array através do uso de métodos simples porém fundamentais.

Nenhum comentário:

Postar um comentário