Ruby 101: Estruturas de Dados
Part II: Array, Hash & Iteração em estruturas de dados
Esse é a segunda parte da série Beautiful Ruby series by Tk. Se você é um dev iniciante aprendendo Ruby, comece pela parte I dessa série. A primeira parte aprendemos sobre a história do Ruby & os básicos como variáveis, Controle de Fluxo (is-else) e looping.
Nessa segunda parte, vamos falar sobre Estruturas de Dados em Ruby, como elas funcionam e como iteramos sobre elas.
Array: Coleção | Lista | Estrutura de Dados
Imagine que você queira armazenar um número inteiro 1 numa variável. Mas talvez agora você queira armazenar outro também: 2. E 3, 4, 5 …
Nós temos um outro jeito de armazenar inteiros sem ser milhões de variáveis? Se eu estou perguntando, provavelmente temos outra forma de armazenarmos.
Array é uma lista que podemos armazenar uma coleção de valores (como esses número inteiros que queríamos). Vamos usá-lo!
É bem simples! Criamos um array e armazenando no my_integer.
Mas você deve estar se perguntando: “Como consigo pegar um valor desse array?”
Boa pergunta! Array tem o conceito de índices. O primeiro elemento do array tem índice 0 (zero). O secundo é 1, e assim por diante. Você sacou a ideia!
Para entender melhor como cada índice aponta para seu elemento no array, vamos desenhá-lo?
Usando a sintaxe do Ruby agora. É bem simples de entender como funciona!
Armazenamos a lista de inteiros no my_integers, e printamos os índices 0, 1 e 4, que nos dá os elementos 5, 7 e 4.
Imagine que nós não queremos brincar com inteiros. Queremos na verdade armazenar strings. Como uma lista de nomes das pessoas da família. A minha seria assim:
Funciona da mesma forma que dos números inteiros. Nice! :)
Agora nós sabemos como os índices de array funcionam, mas precisamos entender melhor como adicionamos elementos a um array.
Os métodos mais comuns para adicionar um elemento a um array é o push e <<. Como ver como funciona:
Push é bem simples! Só precisamos passar o elemento (ex: “The Effective Engineer”) como parâmetro do método push.
<< também é super simples! Também precisamos passar o elementos como parâmetro. Mas você pode me perguntar “O método << não usa um ponto (dot notation) como outros métodos. Como ele pode ser um método também?”. Boa pergunta! :)
Escrevendo isso:
..é similar a escrever isso:
Great! :)
Bom, chega de Arrays. Bora falar de uma outra estrutura de dados.
Hash: Estrutura de Dados Chave-Valor | Dicionário
Agora sabemos como Array usam índices como número inteiros. Mas se não quisermos usar números inteiros como índices? Alguma Estrutura de Dados que suporte usar números, string e outros tipos de dados como índices.
Vamos aprender sobre a estrutura de dados Hash. Também conhecida como Hash Table, Dictionary e Hash Map. Hash é uma coleção de pares chave-valor. Parecido com isso:
Uma chave apontando para um valor. Como podemos acessar um valor do hash? Isso, você está certo… Usando a chave! Vamos tentar!
Eu criei um hash sobre mim. Meu nome, apelido & nacionalidade, e esses atributos são as chaves do hash.
Assim como aprendemos como o array usa índices para acessar seus elements, nós também usamos índices (chaves no contexto do hash) para a acessar os valores do hash.
No exemplo à cima printamos a frase sobre mim usando todos os valores armazenados no hash. Bem simples!
Outra coisa legal de hashes é que podemos usar valores de qualquer tipo de dado. No hash criado, quero adicionar uma chave “age” e um valor inteiro.
O par chave (“age”) valor (24) usando string como chave e inteiro como valor.
Assim como fizemos com arrays, vamos aprender a adicionar elementos ao hash. O par chave-valor é a grande sacada de como o hash funciona.
Só precisamos atribuir um valor a uma chave do hash. Valor 24 para a chave “age”. Nada complicado né?! :)
Iteração: Looping + Estrutura de Dados
Assim como aprendemos no Ruby Basics, a interação sobre arrays é bem simples. Nós, Ruby devs, usamos comumente o iterador each! Bora usar!
Então o iterador each funciona passando o elemento do array como parâmetro para o bloco. Para cada elemento, nós printamos.
Para o hash, também podemos usar o iterador each, mas passando 2 parâmetros: a chave & o valor.
Esse é um exemplo de como podemos usá-lo. Nomeamos os 2 parâmetros como key e value, mas não é necessário nomear dessa forma. Podemos nomear de qualquer forma que quisermos. Bora ver isso!
Agora nomeamos a chave do hash como attribute, e funciona como esperado! Nice!
That’s it!
Aprendemos muitas coisas sobre o Estruturas de dados do Ruby:
- Array: Coleção| Lista de elementos
- Hash: Estrutura baseada em Chave-Valor
- Como a iteração / looping em estruturas de dados funcionam
Espero que tenham curtido o conteúdo e aprendido um pouco mais sobre como Ruby funciona. Se ainda não viu o primeiro post da série, aprendemos sobre o básico de Ruby.
Continue aprendendo e programando!