4.顺序编程进阶

1. BIF(built-in function)内建函数的使用
   内建函数是erlang虚拟机的一部分,通常完成用erlang无法完成的任务,非常高效,尽量使用。
   BIF 在erlang模块中定义,已经预导入
   例子:
   元组转化为列表: tuple_to_list({12,cat,"hello"}).
   返回当前时间的时分秒: time().
2. 二机制数据(binary):
   在书写或打印二进制数据时,其格式为: <<数字/"字母">>
   可以通过BIF构造二进制数据或提取二机制数据. @spec func(Arg1,Arg2..ArgN) -> Val    @spec为Erlang文档标记,表明函数的参数或返回值
   操作二进制的BIF函数:
   @spec list_to_binary(IoList)  将list数据转化为二进制形式
   @spec split_binary(Bin,Pos)   在Pos位置将二机制数据切分成两部分
   @spec term_to_binary(Term)    将任何Erlang值转化为二机制数据,通常用于数据的文件存储和网络传输,和binary_to_term配合使用
   @spec binary_to_term(Bin)     term_to_binary的反向转化函数。
   @spec size(Bin)               获得二机制数据的字节数。
3. 比特操作(erlang程序设计中文版80页)
   erlang的比特操作是针对二进制位和位串进行的操作,是专门针对协议编程设计的(适合于设计自有协议的嵌入式系统的通信部分)
   实例:将RGB颜色封装进16Bit中
   封包操作  Red = 2. Green = 61. Blue = 20.   Mem = <<Red:5,Green:6,Blue:5>>    Red占5个字节,Green占6个字节(人眼对绿色更敏感),Blue占5个字节
   解包操作  <<R1:5,G1:6,B1:5>> = Mem.

4. 顺序编程小问题集锦:(erlang程序设计中文版83页)
   (1).属性:在模块的头部定义,类似于c语言的宏定义部分
      预定义属性
        -module(modulename)  模块定义
        -export([fun1/1,fun2/1,...]) 导出函数列表定义
        -import(lists,[map/2])  模块中特定函数导入,此时使用函数时不需要添加模块名.
        -compile(Options) 编译器选项设置,经常用于调试,这些选项定义在compile模块手册中都可以找到。例如: -compile(export_all) 导出模块定义的所有函数
        -vsn(Version) 模块版本定义.
      用户定义属性  可以是自定义的任何原子,如:-author({author,sinpo})
      预定义属性和用户定义属性会被编译进模块beam中,并通过modulename:module_info()打印出来,modulename:module_info/0和modulename:module_info/1是模块编译时自动创建的模块元信息查询函数.还可通过模块beam的函数beam_lib:chunks("modulename.beam",[attributes])打印模块元信息.
    (2).进程字典 (erlang程序设计中文版95页)
      进程字典是进程相关的私有数据关联数组,其中变量的行为和传统的命令式编程语言相同,是共享内存的,带副作用的,要谨慎使用,除非变量是一次写入不再变更的
    (3).引用
      引用为全局的唯一Erlang值,适用于创建唯一标签的场合。例如bug跟踪系统中的每一个bug报告的唯一标识

你可能感兴趣的:(erlang,顺序进阶)