Erlang學習記錄:輸入和輸出


輸入和輸出

輸入和輸出功能都被定義在io模塊
輸出功能非常常用,由於erlang項目沒有可斷點調試的IDE(或者說根本不需要),所以所有的調試操作都是由io輸出 來調試的

io:get_line/1.

​ 參數:輸入提示

​ 獲取標准輸入,回車結束,

io:get_chars/2.

​ 參數:輸入提示,跳過字符數量

​ 獲取輸入字符,獲取的字符不包含跳過數量的字符

io:read/1

​ 參數:輸入提示

​ 從shell面板讀取一個項元,項元必須是一個明確的值,而不是一個表達式

io:write/1

​ 打印輸出一個項元

io:format/1

直接輸出一段文本

io:format/2

​ 參數:格式化的字符串/二進制,解析列表,列表,列表

​ 格式化輸出一段文本

​ 格式化的占位符(控制格式化的序列,簡稱:控制序列)以“~”開頭,后面的稱之為填充字符

​ 完美的控制序列型是為F.P.PadC,其中F為輸出寬度(長度和格式,+10表示左對齊10位長度,-10表示右對齊10位長度,內容長度不足時使用Pad填充),P為輸出精度,即截取原輸出文本的長度,當P大於原文本昌都市,使用Pad填充,Pad是填充字符,只能是一個字符,默認空格,C是控制字符,如:40p~n

控制序列表:

符號 說明
~c 輸出一個字符的ASCII碼
~f 輸出一個有6位小數點的浮點數
~e 輸出一個以科學記數法表示的共6位的浮點數
~w 以標准語法從輸出任何項元(也就是Term),常被用於輸出Erlang數據類型
~p 類似~w,但是會在適當的地方換行和縮進,並嘗試將列表作為字符串輸出
W、P 類似w和p,但是限制結構深度為3
~B 輸出一個十進制整數
~n 換行
~s 打印一個字符串,I/O列表或原子,打印時不帶引號

~W深度示例

> io:format("~W",[[z,h,c],3]).
[z,h|...]ok

> io:format("~W",[[z,h,c],2]).
[z|...]ok

> io:format("~W",[[z,h,c],1]).
[...]ok

> io:format("~W---~W",[[z,h,c],1,[a,b,c],2]).
[...]---[a|...]ok
> f(List).
ok 

> List = [2,3,math:pi()].
[2,3,3.141592653589793]

> f(Sum).
ok

> Sum = lists:sum(List).
8.141592653589793

> io:format("hello,world!~n",[]).
hello,world!
ok

> io:format("the sum of ~w is ~w.~n",[[2,3,4],demo:sum([2,3,4])]).
the sum of [2,3,4] is 9.
ok

> io:format("the sum of ~W is ~.2f.~n",[List,3,Sum]).
the sum of [2,3|...] is 8.14.
ok

> io:format("~40p~n",[{apply,io,format,["the sum of ~W is ~.2f.~n",[[2,3,math:pi()],3,demo:sum([2,3,math:pi()])]]}]).
{apply,io,format,
       ["the sum of ~W is ~.2f.~n",
        [[2,3,3.141592653589793],
         3,8.141592653589793]]}
ok

> io:format("|~-4s|",[abc]). 			% |abc |ok
> io:format("|~-10s|",[abc]).			% |abc       |ok
> io:format("|~-10.0.+s|",[abc]).		% |++++++++++|ok
> io:format("|~-10.1.+s|",[abc]).		% |a+++++++++|ok
> io:format("|~-10.2.+s|",[abc]).		% |ab++++++++|ok
> io:format("|~-10.10.+s|",[abc]).		% |abc+++++++|ok

> io:format("|~4s|",[abc]). 			% | abc|ok
> io:format("|~10s|",[abc]).			% |       abc|ok
> io:format("|~10.0.+s|",[abc]).		% |++++++++++|ok
> io:format("|~10.1.+s|",[abc]). 		% |+++++++++a|ok
> io:format("|~10.7.+s|",[abc]). 		% |+++abc++++|ok
> io:format("|~10.10.+s|",[abc]). 		% |+++++++abc|ok

io:format/3

​ 參數:輸出文件流(需要輸出到的進程標識符,file:open(File,write)的返回值)/格式化的字符串/二進制,解析列表,列表,列表

​ 往輸出文件流中輸出(寫出)數據

FS = file:open(File, read|write...).
io:format(FS, "~P~N", [Message]).
file.close(FS).

%% 
<<"愛我中華"/utf8>>
% 或者
unicode:characters_to_binary("愛我中華").

> io:format("~ts",[<<"愛我中華"/utf8>>]).
愛我中華ok

%%todo


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM