格式字串中的公共控制序列

雖然 io:formatio_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]