Recentemente me deparei em uma situação interessante, qual é o momento em que devemos usar map, select e o each, normalmente eu uso o each com frequência aí veio a dúvida em qual momento devemos usar os outros métodos e qual é a diferença entre eles?
Dica: antes de procura em toda parte da web vá primeiro na documentação leia se não entendeu procure contexto diferentes de explicação, por que é importante você saber usar a documentação. Procurando na documentação você se depara com a seguinte situação;
MAP
O map invoca o bloco fornecido uma vez para cada elemento de self. Criando um novo array contendo os valores retornados pelo bloco, se caso nenhum bloco for fornecido, um Enumerador será retornado
Detalhes do map:
O podemos usar ele com arrays, hashes e ranges o principal uso do map é transformar dados.
por exemplo:
Dada uma matriz de strings, você pode passar por cima de cada string e tornar cada caractere maiúsculo
Sintaxe do map no Ruby
array = ["a", "b", "c"]
array.map { |string| string.upcase } # ["A", "B", "C"]
Collect
A collect invoca o bloco fornecido uma vez para cada elemento de self, ele criar um novo array contendo os valores retornados pelo bloco, se não estiver nenhum bloco ele será retornado um Enumerador, no caso é a mesma coisa que o map.
Detalhes do collect
O collect() de enumerable é um método embutido em ruby que retorna um novo array com resultados da execução do bloco uma vez para cada elemento em enum O objeto é repetido todas as veses para cada enum, caso nenhum objeto seja fornecido, ele retorna nil para cada enum
Sintaxe:
(r1..r2).collect {|obj| bloquado }
Parâmetros: A função pega o objeto e o bloco que é para cada enum, também leva r1 e r2 que decide o número de elementos no enumerável retornado.
valor do retorno: Retorna um novo array
retorna o enumerador
enu = (2..6).collect { |x| x * 10 } # [20, 30, 40, 50, 60]
retorna o valor nil
enu = (2..6).collect {} # [nil, nil, nil, nil, nil]
fonte: Geeksforgeeks
Select
O select funciona de duas maneiras únicas; Primeiro: pega o bloco para que possa ser usado como array#select Segundo: Modifica a instrução SELECT da consulta para que apenas determinados campos sejam recuperados.
Exemplo:
[1, 2, 3, 4, 5].select { |num| num.event? } # [2, 4]
Exemplo 2:
a = %w{ a b c d e f }
a.select { |v| v =~ /[aeiou]/ } # ["a", "e"]
Detalhes do select
Select é um método de calsse array que retorna um novo array contendo todos os elementos do array para os quais o bloco dado retorna um valor verdadeiro.
Sintaxe: array.select()
Parâmentro: Matriz
Retorno: Uma nova matriz contendo todos os elemetos da matriz para os quais o bloco fornecido retorna um valor verdadeiro.
fonte: Geeksforgeeks
O each chama o bloco fornecido uma vez para cada elemento em self, passando esse elemento como um parâmetro, no caso ele retornar o próprio array, se caso nenhum bloco for fornecedor ele também traz um Enumerador.
a = [ "a", "b", "c" ]
a.each { |x| print x, "--" } # a--b--c-- => ["a", "b", "c"]
Isso foi um resumo para entender melhor como tratar seus array usando métodos diferentes para situações diferentes.
Fontes: Apidock
Top comments (0)