《Erlang程序设计》学习笔记-第5章 顺序型编程进阶

第5章 顺序型编程进阶

1. 所有的BIF都在erlang模块中,大部分常用的BIF都已被自动导入(也就是说还有一些不常用的没有自动导入)。

2. 二进制数据相对于元组和列表,它更加节省内存,输入输出更加高效。
3. 在书写和打印时,二进制数据用一组以<<和>>括起来的整数或字符序列的形式出现。
    如:<<5,10,20>>. <<"hello">>
    整数要在0-255之间,字符相当于其对应的ASCII码。
4. 可以通过BIF或二进制语法来构造或提取二进制数据。
5. 操纵二进制数据的BIF
    @spec list_to_binary(IoList) -> binary()
        其中IoList是一个列表,其中的元素可以是0~255的整数、二进制数据或者另外一个IoList。亦即IoList可以是一个嵌套的列表。
    @spec split_binary(Bin, Pos) -> {Bin1, Bin2}
        从Pos位置将Bin分成两部分。如果是从1开始的话,第Pos个元素被分在了Bin1中。
    @spec term_to_binary(Term) -> Bin
        可以将任何一个Erlang值转化为二进制数据。转化成的数据可以保存在文件中,通过网络发送等。(如何发送的C写的程序的话,C程序如何解析呢?)
    @spec binary_to_term(Bin) -> Term
        term_to_binary的逆函数。
    @spec size(Bin) -> Int
        返回二进制数据的长度。

6. 比特语法
    <<E1, E2, ..., En>>
    Ei = Value |            %% Size省略时整数是8位,浮点型是64位
        Value:Size |        %% Size代表单元区块的长度,有可能有多个区块(Unit),整个区块的长度Size*Unit
        Value/TypeSpecifierList |
        Value:Size/TypeSpecifierList
    TypeSpecifierList是一个由连字符(-)间隔的形如End-Sign-Type-Unit的列表。 

    其中@type End = big | little | native    默认值是big
    @type Sign = signed | unsigned        默认值是unsigned
    @type Type = integer | float | binary    默认值是integer
    @Unit = 1|2|...|255        当Type是integer或float时,Unit的默认值是1; 当Type是binary,Unit的默认值是8
7. 测试本机的整数表示法:
    {<<16#12345678:32/big>>, <<16#12345678:32/little>>, <<16#12345678:32/native>>, <<16#12345678:32>>}
8. 如果I是一个整数,<<I:32>>可以将I转换一个32位长的二进制数据。

9. apply(Mod, Func, [Arg1, Arg2, ..., ArgN])调用Mod模块中的Func函数,Arg1~ArgN是Func的参数。apply的好处是可以动态改变模块和函数。
10. 预定义属性:(-record()和-include()不是属性&#x
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值