我最近阅读了couch-db的源代码,我发现这个类型定义我不明白:
-type branch() :: {Key::term(), Value::term(), Tree::term()}.
-type path() :: {Start::pos_integer(), branch()}.
-type tree() :: [branch()].
Run Code Online (Sandbox Code Playgroud)
我确实阅读过Erlang doc,但Start,Key,Value和Tree的含义是什么?据我所知,它们是Erlang变量!我在Erlang doc中没有找到任何关于此的信息.
Start等等只是术语各部分的描述性名称,以使人们更容易阅读类型定义.它们与实际变量名无关.
(附注:遗憾的是,即使是在OTP R14B,edoc仍然无法读取-type和-spec生成它的HTML文件-它使用旧的@type和@spec来代替.)
更新:关于-type和-spec的官方文档.要搜索的更多内容是成功输入这个词以及透析器和typer的手册.