• 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

  • 相关阅读:
    leetcode-62-Unique Paths
    [leetcode-64-Minimum Path Sum]
    [leetcode-198-House Robber]
    [leetcode-120-Triangle]
    [leetcode-53-Maximum Subarray]
    [leetcode-303-Range Sum Query
    [leetcode-123-Best Time to Buy and Sell Stock III]
    绑定下拉框
    解决URL参数中文乱码
    html 图片拖动不出来的脚本
  • 原文地址:https://www.cnblogs.com/vmask/p/7754356.html
Copyright © 2020-2023  润新知