Erlang 是一种用于构建并发、分布式和容错系统的编程语言。以下是一些常用的命令和操作。
入门
启动 Erlang Shell
1 | erl |
编译代码
1 | 在 Erlang Shell 中编译 |
运行代码
1 | 在 Erlang Shell 中运行 |
退出 Erlang Shell
1 | q(). |
代码结构
模块定义
1 | -module(module_name). |
导出函数
1 | -export([function1/0, function2/1]). |
注释
1 | % 单行注释 |
变量
1 | VarName = Value. % 变量名必须以大写字母开头 |
数据类型
原子
1 | atom. % 例子:atom, 'Atom with spaces' |
数字
1 | 123. % 整数 |
布尔值
1 | true. |
字符串
1 | "Hello, World!". |
元组
1 | {ok, "Success"}. |
列表
1 | [1, 2, 3]. |
字典 (Map)
1 | #{key1 => value1, key2 => value2}. |
控制结构
条件语句
1 | if |
case 表达式
1 | case Expression of |
函数定义
1 | % 无参函数 |
列表操作
列表生成
1 | % 生成 1 到 10 的列表 |
并发
启动进程
1 | spawn(Module, Function, Args). |
发送消息
1 | Pid ! Message. |
接收消息
1 | receive |
模式匹配
1 | {ok, Value} = {ok, 42}. |
常用内置函数 (BIFs)
列表操作
1 | lists:append(List1, List2). |
元组操作
1 | element(N, Tuple). |
字符串操作
1 | string:len(String). |
文件操作
1 | file:read_file(Filename). |
列表操作
1 | lists:map(fun(X) -> X * 2 end, [1, 2, 3]). |
字符串操作
1 | string:len("Hello"). |
文件操作
1 | {ok, File} = file:open("test.txt", [write]). |
示例:简单的服务器
1 | -module(server). |
并发编程
创建进程
1 | Pid = spawn(Module, Function, Args). |
发送消息
1 | Pid ! Message. |
接收消息
1 | receive |
链接进程
1 | link(Pid). |
监控进程
1 | MonitorRef = erlang:monitor(process, Pid). |
错误处理
捕获异常
1 | try Expression of |
常见异常类型
throw
error
exit
错误处理
1 | try Expression of |
分布式编程
启动分布式节点
1 | erl -name nodename@hostname -setcookie Cookie |
连接节点
1 | net_adm:ping(Node). |
发送消息到远程节点
1 | {remote_process, 'remote_node@host'} ! Message. |
OTP 框架
定义 GenServer
1 | -module(my_gen_server). |
使用 GenServer
1 | gen_server:start_link({local, Name}, Module, Args, Options). |
测试
编写 EUnit 测试
1 | -module(module_name_tests). |
运行 EUnit 测试
1 | 在命令行中运行 |
另见
评论