web-dev-qa-db-fra.com

Elixir, IO.inspect pour ne pas couper une longue liste

Quand je fais:

IO.inspect [:right, :top, :left, ...very_long_list]

Je ne reçois que les premiers éléments (c'est une liste de mouvements pour résoudre un puzzle de 15) comme celui-ci:

[:right, :top, :left, :bot, :bot, :left, :top, :top, :right, :right, :bot,
  :left, :bot, :left, :top, :right, :bot, :right, :top, :top, :left, :bot,
  :left, :top, :right, :right, :bot, :bot, :left, :top, :top, :left, :bot,
  :right, :top, :right, :bot, :left, :left, :top, :right, :bot, :right, :top,
  :left, :left, :bot, ...] # => See the '...'
                                instead I would like 
                                to get the complete list

Comment puis-je dire IO.inspect pour ne pas rogner la liste? Y a-t-il une option ou quelque chose?

39
ItsASecret

Voir Inspect.Opts pour une description des options disponibles:

  • :limit - limite le nombre d'éléments imprimés pour les tuples, les chaînes de bits, les cartes, les listes et toute autre collection d'éléments. Il ne s'applique pas aux chaînes ni aux listes de caractères et par défaut à 50. Si vous ne souhaitez pas limiter le nombre d'éléments à un nombre particulier, utilisez :infinity.

Ainsi, vous pouvez passer limit: :infinity pour imprimer tous les éléments:

IO.inspect(list, limit: :infinity)

Pour les chaînes et les listes de caractères, il existe une option spéciale appelée :printable_limit. Ces deux options peuvent être combinées pour garantir que tous les éléments sont entièrement imprimés.

64
Patrick Oscity

Pour ceux qui le veulent pour des cordes auxquelles la solution ci-dessus n'est pas destinée.

Utilisation printable_limit: integer/:infinityhttps://hexdocs.pm/elixir/Inspect.Opts.html

14
Philip