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报告的唯一标识