格式字串中的公共控制序列
雖然 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]