Erlang 从零 · 第 31 课(展开目录)
01 · 先打开 erl02 · 先认常见 term03 · 分清两种文字04 · 变量只接一次05 · 拆开一列,再筛一次06 · 把文字安全变成整数07 · 用 case 选一条路08 · 让函数继续走09 · 把代码放进模块10 · 条件必须说真话11 · 一层一层取数据12 · 文字先说清编码13 · 让函数子句排好队14 · 带着累加器往前走15 · 先看值,再选路16 · 给模块立规矩17 · 让 rebar3 管项目18 · 让结果有固定形状19 · 把磁盘当成会失败的邻居20 · 把函数交给 list21 · record 留在院里22 · 先写模块之间的约定23 · 把 term 形状写出来24 · 小测试与整段路25 · 把应用磨成命令26 · 先把小项目圈住27 · 把真实文件洗干净28 · 公开入口越少越稳29 · 把约定留在源码旁30 · 打包,也留下线索31 · 按最初任务交卷
ERLANG · 作品 · LESSON 3145 分钟

按最初任务交卷

从干净终端跑验收表,确认功能、错误和交付说明。

01 · 先看完整例子

运行最终验收表

再补空文件用例,把实际结果写进 README。

Erlang
# 1. 自动检查与构建
rebar3 eunit
rebar3 dialyzer
rebar3 escriptize

# 2. 成功文件:核对三项统计
_build/default/bin/trail_stats fixtures/poem.txt

# 3. 缺失文件:核对错误与非零状态
_build/default/bin/trail_stats fixtures/missing.txt
echo $?
先对照结果
  • 测试与分析通过。
  • 成功文件输出三项数字。
  • 缺失文件显示短错误,退出状态不是 0。
02 · 回头拆代码

从第一行往下读

  1. 从新终端照 README 构建,发现隐藏环境步骤就补文档。
  2. 逐条保存实际输出,与第 26 课预期对照。
  3. 只修验收失败,新想法放进后续清单。
03 · 认清新符号

符号不是暗号

$?

多数 shell 中读取上一条命令退出状态。

rebar3 eunit

运行单元与集成 EUnit 测试。

_build/default/bin

默认 profile 的 escript 常见输出目录。

04 · 代码里的概念

把名字和意思对上

01

验收

按编码前约定的外部标准判断项目是否完成。

02

可重复构建

换到干净环境,照文档仍能得到同样产物。

05 · 再说清楚

这些写法为什么有用

最后不再添功能。拿出第 26 课任务书,从用户入口逐项检查。

验收不能绕过 escript 直接调用内部模块。错误文字、日志与退出状态都属于结果。

在 README 记录构建命令、Erlang/OTP 版本和已知限制。把一个小闭环真正走完。

06 · 自己改一次

合上答案,动手

写出空文件验收结果。

练习起点
给定:一个空 UTF-8 文件
运行:trail_stats empty.txt
期待:lines=____, words=____, chars=____

目标结果: 三项都为 0,命令以状态 0 退出。

卡住了,再看提示

空文件没有行、词和字符。

运行过以后,再看一种答案
一种答案
给定:一个空 UTF-8 文件
运行:trail_stats empty.txt
期待:lines=0, words=0, chars=0,退出状态为 0
想一想:验收前发现一个新功能点,要马上塞进去吗?

先记入后续清单。当前只修任务书范围内的失败。

带走

记住三句

  1. 1

    验收标准应提前写下。

  2. 2

    从真正用户入口检查项目。

  3. 3

    完成一个小闭环,再走 BEAM 主线。

本课结束代码也跑过一次,就把这一课收好。