All for Joomla All for Webmasters
Ruby

Ruby: Os métodos de Array que você deveria conhecer

Os arrays são estruturas fundamentais em qualquer linguagem de programação. A habilidade ler e manipular os conjuntos de dados de forma eficaz é crucial para otimizar o desempenho da sua aplicação. Nesse post, vamos visitar 6 métodos principais da linguagem Ruby para manipulação de arrays.

Map/Each

Esses dois métodos são bem similares. Eles permitem que você percorra cada item do seu conjunto e realize alguma ação sobre ele. Vamos ver um exemplo:

Se lermos a variável dobro_map , obteremos o array [2,4,6] , enquanto a variável dobro_each  contém os valores [1,2,3] . Isso porque o each executa o bloco de código mas não retorna os valores resultantes da avaliação, mas sim o array original. O método map , por sua vez, retorna um array construído como resultado da chamada do bloco de código para cada elemento do array original. É importante ter em mente o conceito de como é feita essa iteração/retorno para entender como usar cada um desses métodos.

Efeitos colaterais do map

Se você está acostumado com a programação procedural, o método map  do Ruby pode parecer pouco familiar e isso pode gerar algumas armadilhas. Vamos dar uma olhada no exemplo a seguir. Eu tenho uma classe Evento  no meu projeto:

Você pode esperar que o map  estivesse trabalhando com uma cópia de cada elemento do array, mas qualquer alteração (como a atribuição do nome) realizada no elemento será refletida no original. É importante ter isso em mente para não obter resultados inesperados.

Select

O método select permite filtrar os elementos do array baseado na condição booleana expressa no bloco. É importante que esse bloco tenha como resultado um verdadeiro/falso para saber se determinado elemento deve ser retornado de acordo com tais condições.

Um exemplo um pouco mais complexo, junto com uma aplicação do map , para chegar um pouco mais próximo de um uso real:

Sintaxe menos verbosa: .map(&:metodo)

Se nós estivéssemos trabalhando com objetos do tipo Carro  e não apenas uma hash simples, nós poderíamos ter usado uma sintaxe ainda mais enxuta. Em um exemplo diferente, suponha que estamos preparando essa lista de carros para enviar um JSON para uma API. Nós podemos usar o método to_json :

Reject

O reject é o exato oposto do select. Em vez de selecionar os itens do array que queremos, vamos rejeitar tudo aquilo que retornar verdadeiro para nossa função de avaliação:

Reduce

O reduce  tem uma estrutura mais complexa do que os métodos que vimos até agora, mas geralmente é usado para operações simples em Ruby – geralmente cálculos matemáticos. Nós tomamos um array e executamos uma função em cada item do conjunto. Nesse caso, em vez de uma operação individual para cada elemento, como no map , o retorno de cada operação acumula para a próxima execução. Por exemplo, para somarmos todos os elementos:

Uma nota sobre o reduce  é que, se você estiver trabalhando com qualquer elemento que não seja número ou string, você precisa definir um valor inicial como argumento:

Existem, é claro, aplicações mais complexas para o método. Mas essa é uma boa noção inicial.

Join

Como bônus, o método join  é muito útil no tratamento de strings e base de dados. O método join  recebe um argumento que é a string a ser inserida entre todos os elementos do array. No nosso exemplo anterior:

Utilizando os métodos em conjunto

Para uma demonstração mais completa, vamos utilizar todos os métodos juntos. No exemplo, temos 10 dias de tarefas, e é aleatório quanto tempo cada uma levará. Isso assumindo que somos preguiçosos e não faremos qualquer uma que leve mais de 15 minutos. Além disso, as que levam mais do que 5 minutos decidimos deixar para outro dia. Para sabermos o tempo total das tarefas selecionadas:

A resposta é irrelevante porque cada execução irá gerar uma saída, pelo caráter aleatório. Abra o console do Ruby e faça alguns testes para se familiarizar. Ps: Esse ? :  no map é um if ternário , com uma sintaxe mais curta (mas menos legível).

Os métodos listados acima devem ser suficientes para atender a grande maioria das suas necessidades (especialmente each/map ). Entretanto, é válido conhecer os demais métodos (incluindo os que não foram listados aqui, como collect, delete, dentre outros) que são casos mais concisos de aplicações particulares e podem melhorar significantemente tanto a legibilidade do seu código quanto a performance, dependendo do caso de uso. Quaisquer dúvidas ou sugestões, utilize a área de comentários ou entre em contato!


Fonte: https://medium.freecodecamp.org/six-ruby-array-methods-you-need-to-know-5f81c1e268ce

Você Também Pode Gostar

3 Comentários

  • Responder
    Adalberto Caldeira
    26 de junho de 2019 at 11:45

    Cara muito obrigado por ajudar esse veio aqui a aprender uma coisa nova!
    Desejo tudo de bom e continue a fazer esse servico para a humanidade !

    Depois de ler as dicas preciosas, resolvi o exercicio sem problemas.

    • Responder
      Ronan Lopes
      27 de junho de 2019 at 14:54

      Grande satisfação em ler seu comentário, Adalberto! Qualquer coisa que precisar é só entrar em contato. Bons estudos! =)

  • Responder
    RODRIGO CORREA BAGATIM
    4 de junho de 2020 at 10:56

    Ótimo, parabéns e muito obrigado!

  • Deixe uma resposta para Adalberto Caldeira Cancelar Resposta