ppo*_*off 4 erlang types dialyzer
我正在学习二郎并尝试使用透析器,以便在可能的情况下获得最大的类型安全性.有一件事我不明白:非终止函数的类型是什么以及如何在规范中表示它.你能否对此有所了解?
永远循环且永不终止的函数具有返回类型no_return().(该返回类型也用于总是抛出异常的函数,例如自定义错误函数.如果您没有指定返回类型,Dialyzer会告诉您函数"没有本地返回".)
这在Erlang参考手册的类型和功能规范章节中提到:
Erlang中的一些函数并不意味着返回; 要么因为它们定义服务器,要么因为它们用于抛出异常,如下面的函数所示:
Run Code Online (Sandbox Code Playgroud)my_error(Err) -> erlang:throw({error, Err}).对于此类功能,建议
no_return()通过以下形式的合同使用特殊类型进行"返回":Run Code Online (Sandbox Code Playgroud)-spec my_error(term()) -> no_return().