a Implementação de Ruby's Coletar Método
Ruby Recolher método
Ruby collect
método é parte do Enumerável mixin; um mixin que proporciona muito úteis e eficientes métodos para objetos de coleção. collect
é um método que eu uso todo o tempo e recentemente escreveu sobre o meu artigo trabalhando com enumerables: quatro poderosos métodos de coleção.
collect
permite que você transforme cada elemento de seu objeto de coleção (Array, Hash, ou o seu próprio objeto) em algo mais, terminando com uma Matriz.
Aqui está um exemplo simples de pegar uma matriz de inteiros e multiplicar cada um deles por 2.
.collect{ |num| num * 2 }#
re-implementando o método de recolha
i wanted to create my own collect
method to see how it is implemented. Acontece que é feito muito facilmente, em cerca de 5 linhas de código. Eu devo dizer que o único caso de uso que eu não cobrir é quando nenhum bloco é passado para o método, nesse caso um enumerador é geralmente devolvido.
vamos adicionar o nosso novo kollect
(para que os nomes não entrem em conflito) ao módulo enumerável. Em Looping através de nossa coleção, vamos aplicar o bloco para cada elemento, adicionando o resultado retornado a uma nova matriz que está sendo criada.
module Enumerabledef kollectnew_ary =self.each do |elem|new_ary << yield(elem)endnew_aryendend
Se a gente comparar este Ruby, código-fonte, ele basicamente faz a mesma coisa, mas é muito mais simples, porque estamos trabalhando com Ruby em si, e não C.
Usando o nosso novo método de Coletar
Agora tudo o que resta é ver se o kollect
método realmente funciona! I wanted to try it using both the normal block syntax, but also the short-hand &:method_name sintaxe, para garantir que ambos funcionam.óptimo! Em ambos os casos, ele pega os nomes na matriz e converte-os em maiúsculas.