第二章 入门

2.1 概览

2.1.1 阶段1:茫然无绪

  • 安装Erlang
  • 启动Erlang Shell
  • Erlang Shell的基本使用
  • 在文本编辑器中编写Erlang程序
  • 在Erlang Shell中编译和运行程序

2.1.2 阶段2:初窥门径

  • Erlang Shell的高级功能
  • Erlang的各种模块
  • Erlang的自动编译和执行
  • 运用OTP
  • 编写分布式程序

2.1.3 阶段2.5:观其大略, 不求甚解

  • 第一次通读不需要每一章都学精之后再继续向下进行, 快速通览全貌再各个击破。

2.1.4 阶段3:运用自如

  • 学习Mnesia(Erlang内置的数据库)
  • 学习与其它语言的互相调用
  • 利用OTP构建监控树和启动脚本
  • 运行和优化程序

2.2 Erlang安装

# Fedora
yum install -y erlang

# Mac OS X
brew install erlang

2.3 代码地址

http://pragmaticprogrammer.com/titles/jacrlang/code.html

2.4 启动Shell

使用erl启动Erlang Shell
使用q().退出shell

2.5 整数运算

表达式需要以”.”结尾

2.6 变量

变量以大写字母开头

2.6.1 变量不变

变量只能赋值一次, 此后的赋值操作将执行模式匹配, 遇到与首次赋值内容不同的操作将会提示模式匹配错误, 也就是说Erlang中的变量的值实际是不变的。

2.6.2 模式匹配

‘=’在其它语言中为赋值操作, 但在Erlang中为模式匹配操作

2.6.3 单一赋值

因为变量赋值一次后永不改变, 所以不用担心多个程序同时对可变内容(共享内存)进行修改的问题, 因此更有利于并发程序的编写。

2.7 浮点数

1> 5 div 3.
1
2> 5 rem 3.
2
3> 5 / 3.
1.6666666666666667

2.8 原子

原子用来表示不同的非数字常量值, 是一串以小写字母开头, 后跟数字、字母、下划线或邮件符号的字符, 也可以使用单引号引起来的字符, 原子的值即为其本身。

2.9 元组

元组是一定数量的项组成的单一的实体, 采用逗号分割若干个值括在花括号中的方式。
C语言定义坐标系中的点

struct point
{
    int x;
    int y;
} P;
P.x = 10; P.y = 45;

Erlang中不用类型声明

P = {10, 45}.
P = {point, 10, 45}.

获取元组中的字段值使用模式匹配的方式

# 注意变量需大写字母开头、单一赋值
1> {point, X, Y} = Point.
{point,10,45}
2> {point, X, Y} = P.
3> X.
10
4> Y.
45

# 使用'_'作为占位符, 只获取需要的变量
5> {point, _, A} = P.
{point,10,45}
6> A.
45

2.10 列表

列表用于存储数量可变的项, 采用逗号分割若干个值括在方括号中的方式, 列表中的元素可以是不同的类型。
列表的第一个元素称为列表的头, 其余称为列表的尾。
列表操作

# 定义列表
1> T = [{apples, 10}, {pears, 6}, {milk, 3}].
[{apples,10},{pears,6},{milk,3}]

# 添加内容
2> TAdd = [{oranges, 4} | T].
[{oranges,4},{apples,10},{pears,6},{milk,3}]

# 提取内容(使用竖线'|'区分头和尾)
3> [Thead | Ttail] = TAdd.
[{oranges,4},{apples,10},{pears,6},{milk,3}]
4> Thead.
{oranges,4}
5> Ttail.
[{apples,10},{pears,6},{milk,3}]

2.11 字符串

字符串是使用双引号括起来的一串字符, 本质是一个整数列表。

1> Name = "Hello".
"Hello"
2> [83, 117, 114, 112, 114, 105, 115, 101].
"Surprise"
3> N = "中文".
[228,184,173,230,150,135]
posted @ 2020-08-20 13:22  养诚  阅读(229)  评论(0编辑  收藏  举报