Recherche…


Syntaxe

  • io: format (FormatString, Args)% écriture en sortie standard
  • io: format (standard_error, FormatString, Args)% écriture en erreur standard
  • io: format (F, FormatString, Args)% écriture en fichier ouvert
  • io_lib: format (FormatString, Args)% renvoie un iolist

Séquences de contrôle communes dans les chaînes de format

Bien qu'il existe de nombreuses séquences de contrôle différentes pour io:format et io_lib:format , la plupart du temps, vous n'en utiliserez que trois différentes: ~s , ~p et ~w .

~ s

Le ~s est pour les chaînes .

Il imprime des chaînes, des binaires et des atomes. (Tout le reste provoquera une erreur de badarg .) Il ne cite ni n’échappe à rien; il imprime juste la chaîne elle-même:

%% Printing a string:
> io:format("~s\n", ["hello world"]).
hello world

%% Printing a binary:
> io:format("~s\n", [<<"hello world">>]).
hello world

%% Printing an atom:
> io:format("~s\n", ['hello world']).
hello world

~ w

Le ~w sert à écrire avec une syntaxe standard .

Il peut imprimer n'importe quel terme Erlang. La sortie peut être analysée pour renvoyer le terme Erlang d'origine, à moins qu'elle ne contienne des termes sans représentation écrite analysable, c'est-à-dire des pids, des ports et des références. Il n'insère pas de nouvelles lignes ni d'indentation, et les chaînes sont toujours interprétées comme des listes:

> io:format("~w\n", ["abc"]).
[97,98,99]

~ p

Le ~p est pour la jolie impression .

Il peut imprimer n'importe quel terme Erlang. La sortie diffère de ~w de la manière suivante:

  • Les nouvelles lignes sont insérées si la ligne est trop longue.
  • Lorsque des nouvelles lignes sont insérées, la ligne suivante est en retrait pour s'aligner sur un terme précédent du même niveau.
  • Si une liste d'entiers ressemble à une chaîne imprimable, elle est interprétée comme une chaîne.
> io:format("~p\n", [{this,is,a,tuple,with,many,elements,'and',a,list,'of',numbers,[97,98,99],that,'end',up,making,the,line,too,long}]).
{this,is,a,tuple,with,many,elements,'and',a,list,'of',numbers,"abc",that,
      'end',up,making,the,line,too,long}

Si vous ne voulez pas que les listes d'entiers soient imprimées en tant que chaînes, vous pouvez utiliser la séquence ~lp (insérer une lettre minuscule L avant p ):

> io:format("~lp\n", [[97,98,99]]).
[97,98,99]

> io:format("~lp\n", ["abc"]).
[97,98,99]


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow