0x00 说在前面
Erlang读音/ˈɜːrlæŋ/
。第一次见到的时候总感觉怎么读都读不对,后来在维基上看到Erlang标注了音标,才能准确的读出来,而且也没那么怪异。因为工作才有机会接触这门语言,也因此只有三天的时间可以看《Erlang程序设计》这本书。学习这门语言的时候带着一个工作目标:把一个Erlang日志收集分析统计的代码转换成Python的。而Erlang的风格是尽量不写注释,尽量在写函数名和变量名的时候表达清楚代码的含义。这样一来学习Erlang就成了必要的,很庆幸,领导给了三天时间学习,三天时间基本也足够了。除了这一片基础语法的入门篇之外,后续还有一篇或者两篇并发编程和分布式编程的,毕竟这个才是Erlang擅长的领域。话不多说,show me your article
0x01 配置开发环境
依赖工具:
- Erlang版本:18.3
- IDE:IDEA
下载链接:
- Erlang:https://www.erlang.org/downloads 选择otp18.3即可。
- IDEA:https://www.jetbrains.com/idea/download 选择社区版即可。
IDEA配置Erlang插件:
0x02 基础知识
注释
- % 百分比符号标明注释的开始。
- %% 两个符号通常用于注释函数。
- %%% 三个符号通常用于注释模块。
变量
所有的变量都必须以大写字母开头,变量只可一次赋值,赋值之后不可在变。 f()函数释放shell绑定变量。
浮点数
- 浮点数必须含有小数点且小数点后必须有一位10进制数
- 用/来除两个整数时相除结果会自动转换成浮点数
- div取整,rem取余
三种标点符号
- 整个函数的定义结束时用一个句号“.”
- 函数参数,数据构建,顺序语句之间,用逗号“,”分隔
- 函数定义、
case
、if
、try..catch
、receive
表达式中的模式匹配时,用分号“;”分界
恒等
恒等测试符号 =:=以及不等测试符号 =/=
块表达式
当程序中某处的语法要求只能使用单个表达式但是逻辑上又需要在此使用多个表达式时,就可以使用begin...end快表达式
begin
Expr1,
...
ExprN
end
0x03 内置数据结构
元组及模式匹配(解构)
- _ 代表丢弃的变量,和python相同
- 匹配时模式匹配符=左右两边的元组的结构必须相同。
1> Point = {point, 20, 43}.
{point,20,43}
2> {point, x, y} = Point.
** exception error: no match of right hand side value {point,20,43}
3> {point, X, Y} = Point.
{point,20,43}
4> X.
20
5> Y