为什么透析器只检查功能的第一个用例?
-spec f(integer()) -> integer(). f(0) -> 0; f(_) -> test.
继续分析...在0m0.25s内完成完成(成功通过)带有“case”的版本也会通过检查:
-spec f(integer()) -> integer(). f(N) -> case N of 0 -> 1; _ -> test end.
透析器版本为4.4.3
e5nszbig1#
如果通过,因为你已经告诉了它函数应该做什么。如果你试图用规范中的不同参数 * 调用 * 函数,那么你会得到一个警告:测试()-〉f(不是整数)。给出透析器输出:
f.erl:8:13: The call f:f ('not_an_integer') breaks the contract. (integer()) -> integer()
1条答案
按热度按时间e5nszbig1#
如果通过,因为你已经告诉了它函数应该做什么。如果你试图用规范中的不同参数 * 调用 * 函数,那么你会得到一个警告:
测试()-〉f(不是整数)。
给出透析器输出: