格式字符串中的公共控制序列
虽然 io:format
和 io_lib:format
有许多不同的控制序列 ,但大多数时候你只使用三种不同的控制序列 :~s
,~p
和~w
。
382 4
~s
用于琴弦。
它打印字符串,二进制文件和原子。 (任何其他东西都会导致 badarg
错误。)它没有引用或转义任何东西; 它只是打印字符串本身:
%% 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 ^
~w
用于使用标准语法编写。
它可以打印任何 Erlang 术语。可以解析输出以返回原始的 Erlang 术语,除非它包含没有可解析的书面表示的术语,即 pids,端口和引用。它不会插入任何换行符或缩进,并且字符串始终被解释为列表:
> io:format("~w\n", ["abc"]).
[97,98,99]
〜p
~p
用于漂亮打印。
它可以打印任何 Erlang 术语。输出与~w
的不同之处如下:
- 如果该行太长,则插入换行符。
- 插入换行符时,下一行将缩进以与同一级别上的前一个术语对齐。
- 如果整数列表看起来像可打印字符串,则将其解释为一个。
> 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}
如果你不希望将整数列表打印为字符串,则可以使用~lp
序列(在 p
之前插入小写字母 L):
> io:format("~lp\n", [[97,98,99]]).
[97,98,99]
> io:format("~lp\n", ["abc"]).
[97,98,99]