sesion - ¿Una forma Ruby más eficiente para asignar atributos en una matriz de objetos a otra matriz?
que es un usuario en active directory (1)
Utilice el método de map
:
Devuelve una nueva matriz con los resultados de la ejecución del bloque una vez para cada elemento enum.
def recruits_names
self.referrals.map { |r| r.display_name }
end
[Actualización] Según lo indicado por Staelen en los comentarios, este ejemplo se puede acortar aún más a:
def recruits_names
self.referrals.map(&:display_name)
end
Para los curiosos, esto se debe a que &
llama to_proc
en el objeto que lo sigue (cuando se usa en una llamada de método), y Symbol
implementa to_proc
para devolver un Proc
que ejecuta el método indicado por el símbolo en cada valor cedido al bloque (consulte la documentación ).
No repetiré mi pregunta aquí, pero ¿hay alguna forma más eficiente de escribir esto?
def recruits_names
names = []
for r in self.referrals do
names << r.display_name
end
return names
end