web-dev-qa-db-fra.com

Elixir supprimer nil de la liste

J'ai la structure suivante:

[nil,
 %{attributes: %{updated_at: ~N[2017-09-21 08:34:11.899360]},
 ...]

Je veux supprimer les nils. Comment je fais ça? A tenté Enum.reduce/3 mais ça n'a pas marché.

16
Sardoan

Enum.filter/2 vient à la rescousse:

Enum.filter(list, & !is_nil(&1))

Si vous êtes certain qu'il ne peut pas y avoir false atomes dans la liste (l'autre valeur de falsey possible dans Elixir,) le filtre peut être simplifié pour:

Enum.filter(list, & &1)

Aussi (crédits à @Dogbert) il y a une fonction de contrepartie Enum.reject/2 qui "renvoie des éléments de enumerable pour lesquels la fonction fun renvoie false ou nil."

Enum.reject(list, &is_nil/1)
47
Aleksei Matiushkin