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

posted @ 2017-10-30 14:32  HugoRun  阅读(3346)  评论(0编辑  收藏  举报