Erlang编程学习笔记

需积分: 35 4 下载量 147 浏览量 更新于2024-09-14 收藏 34KB TXT 举报
"这是一份关于Erlang编程语言的学习笔记,主要涵盖了Erlang的基础概念、函数定义、模块操作、列表处理、字符串表示、I/O操作、模式匹配以及数据结构的使用。" Erlang是一种面向并发的、函数式编程语言,常用于构建分布式系统。在这些笔记中,我们可以看到以下几个关键知识点: 1. **模块(Module)**:Erlang程序由模块组成,模块中包含函数定义。`-module(tut).` 定义了一个名为`tut`的模块。 2. **函数(Function)**:函数通过`function_name/arity`定义,其中`arity`是函数参数的数量。例如,`double/1`表示接受一个参数的`double`函数。`-export([double/1, fact/1]).` 表示导出`tut`模块中的`double/1`和`fact/1`函数供外部调用。 3. **函数定义**:如`double(X) -> 2*X.` 是一个简单的函数,它接受一个参数`X`并返回其两倍。`fact`函数展示了递归定义,计算一个数的阶乘。 4. **列表操作**:Erlang中常用 `[ ]` 表示列表,如 `[One, Two | Rest] = [1, 2, 3, 4, 5, 6]` 进行了模式匹配,将列表拆分为`One`、`Two`和`Rest`。 5. **长度获取**:`get_length/1` 函数展示了如何递归地计算列表长度。`get_length([]) -> 0;` 用于空列表的情况,`get_length([First|Rest]) -> 1 + get_length(Rest).` 处理非空列表。 6. **字符串**:在Erlang中,字符串实际上是字符列表,如 `[97, 98, 99]` 对应于字符串 "abc"。 7. **I/O操作**:`io:format` 函数用于输出格式化的文本,例如 `io:format("mynameis~w,myageis~w~n",[biao,20])` 会输出 "mynameis biao,myageis 20"。 8. **除法和取余**:`divrem` 是Erlang中的除法和取余运算,如 `10 div 3` 返回整数除法结果,`10 rem 3` 返回余数。 9. **字符与ASCII码**:Erlang中的单引号 `'a'` 代表ASCII码对应的字符,而双引号 `"a"` 表示字符列表。 10. **记录(Record)**:Erlang中的记录类似于结构化数据,如 `F={first,guo}` 和 `L={last,biao}` 创建了两个记录,`Name={person,F,L}` 创建了一个包含两个记录的记录。 11. **模式匹配**:在变量赋值和解构过程中,Erlang支持模式匹配。例如,`{_, {_, N1}, {_, N2}} = Name.` 将`Name`解构为三个部分。 12. **列表访问和遍历**:列表可以通过索引访问,例如 `Head = [Head|_]` 用于获取列表的第一个元素。列表也可以通过迭代处理,如 `lists:map/2` 或 `lists:filter/2`。 13. **列表操作**:`[Buy1|Others] = ThingstoBuy.` 用于提取列表的第一个元素`Buy1`和剩余部分`Others`。 这份笔记为学习Erlang提供了很好的起点,涵盖了基本语法、数据结构和控制流等核心概念,适合初学者回顾和巩固Erlang知识。