작은 erlang 서비스를 작성 중이며 내 유형에 제약 조건을 넣고 싶습니다.erlang에서 -spec 기능을 사용하는 방법
나는 -spec 기능을 찾았으며,이 기능이 특정 유형의 기능에 대한 서명을 '잠그는'방법이라고 생각합니다.
내 예는 함수처럼 될 것이다 :
fib(N) when N < 3 ->
1;
fib(N) ->
fib(N-1) + fib(N-2).
-spec fib_cps(pos_integer()) -> pos_integer().
이 방법이어야 올바른 형식을 반환 확인해야합니다 라인을 추가하지만,이 경우 될 것 같지 않습니다. .
fib(N) when N < 3 ->
ok;
fib(N) ->
not_ok.
: 내가 할 수있는 기능을 변경하는 경우에 대한
코드는 여전히 컴파일되고 정상적으로 실행됩니다.
내가 뭘 잘못 알고 있니?
BTW, 당신의 타입 스펙은'-spec fib_cps (pos_integer()) -> pos_integer().'와 같이 보일 것입니다 (빈 괄호에주의하십시오). 그렇지 않으면 Dialyzer는 여러분이 원자'pos_integer'를 의미한다고 생각합니다. – legoscia