Erlang编程学习笔记
需积分: 35 30 浏览量
更新于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知识。
2019-07-09 上传
2016-07-20 上传
2012-04-04 上传
2019-03-18 上传
2021-06-05 上传
2019-04-19 上传
2021-07-06 上传
shooga
- 粉丝: 2
- 资源: 19
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫