erlang顺序编程进阶

erlang相关书籍网盘分享下载:https://blog.csdn.net/weixin_40352578/article/details/82944159

1.BIF

内建函数,erlang虚拟机中的操作,手册:http://www.erlang.org/doc/man/erlang.html

2.二进制数据

使用二进制存储大量的原始数据。

3.比特语法

X占3bit,Y占7bit,Z占6bit。

编写一些底层代码时,对二进制进行封包和解包。

比特语法表达式

4.问题集锦

(1)apply

动态计算函数名和模块名。

(2)属性

预定义模块属性:

-module(modname):modname必须是原子。

-compile(Options):给编译器选项里列表添加Options。注意:-compile(export_all),导出单签模块的所有函数。

-vsn(Version):指定模块的版本

用户定义属性:

-SomeTag(Value):SomeTag必须是原子。模块属性可以编译进模块并可以在运行时被提取出来。

(3)块表达式

将一串表达式组织成类似子句的实体。值为最后一个表达式的数值。可以在允许使用单个表达式的地方使用多个表达式的快表达式表示。

(4)布尔表达式

当编写函数,返回两个原子中的一个时候,返回布尔值。使用布尔值进行逻辑运算时候,操作数必须为布尔符号或者可以求出布尔值的布尔表达式。

(5)注释

erlang只有行注释,使用%。

(6)epp

epp是erlang的预处理器,用于扩展源文件中的宏,并且插入任何必须的包含文件。

(7)转义符

可以使用~w打印转义符的整数值。

(8)表达式和表达式序列

表达式序列使用逗号分开,结果是最后一个表达式的值。

(9)函数引用

内部函数引用:fun LocalFun/Arity。

外部函数引用:fun Mod:RemoteFunc/Arity.

(10)包含文件

-include(Filename)自定义.hrl文件。

-include_lib(Name):引入库中文件。

可以将记录放在包含文件中,多个模块文件对其引用。

(11)列表操作符++和--

A++B:列表附加

A--B:如果X在B中出现K次,那么A中删除K个X。

使用++进行模式匹配。[$b,$e,$g,$i,$n|T]。

(12)宏

epp预处理器对宏进行扩展。

注意:?FILE扩展为当前文件名

?MODULE扩展为当前模块名。

?LINE扩展为当前行号。

(13)在模式中使用匹配操作符

(14)进程字典

erlang中的每个进程都有自己的私有数据存储。

(15)比较表达式

number<atom<reference<fun<port<pid<tuple<list<binary.所有类型都有比较顺序,可以对任何类型的列表进行排序。

注意:(1)整数与浮点数进行比较,整数转换为浮点数。

          (2)==适用于数值型比较(浮点数和整数)。=:=两个项目是否相等。

          (3)注意使用模式匹配。F=fun(12)->...end,F(12.0),报错。

(16)下划线变量

使用_VarName的方式,可以将仅使用一次的变量消除警告。在模式匹配中可以使用_ValName的形式命名一个不准备使用的变量。

 

猜你喜欢

转载自blog.csdn.net/weixin_40352578/article/details/79481867