0044 Flat

Aplatir vos tableaux

flat_map défini dans Enumerable fait 2 choses :

  • Elle transforme les données comme map
  • Elle « aplatit » d’un niveau le résultat de chaque transformation si c’est un tableau

Tout comme map a un alias collect, flat_map a un alias collect_concat!

0044-flat_1.png

flatten est lui défini pour Array et Hash et ne fait qu’une chose, il « aplatit » les tableaux, mais la profondeur est paramétrable. Pour Array, la profondeur par défaut est illimitée, pour Hash, elle est de 1! Une valeur négative indique une profondeur illimitée.

0044-flat_2.png

L’utilisation de l’un ou l’autre dépendra du contexte. Cependant le cas courant concerne 1 niveau, et alors flat_map est en moyenne 2 fois plus performant que map { ... }.flatten.

Les liens vers la documentation Ruby de flat_map, Hash#flatten et Array#flatten.