Erlang Language
Format des chaînes
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]