gpt4 book ai didi

erlang - Erlang 头文件中同一函数的多个规范

转载 作者:行者123 更新时间:2023-12-04 15:21:12 27 4
gpt4 key购买 nike

我试图在头文件中指定一个函数。
像这样:

-spec update(pid(), tuple(tuple(), integer(), atom()), tuple(atom(), atom())) -> tuple(tuple(), integer(), atom()).

现在我想为这个函数添加一些额外的规范,因为它有多个不同的参数。
update(_Pid, {Specs, infinity, _State}, {Step}) ->
timer:sleep(10000),
{{Specs, infinity}, {Step}};
update(_Pid, {Specs, infinity, _State}, {ExtraInfo, Step}) ->
timer:sleep(10000),
{{Specs, infinity}, {ExtraInfo, Step}};
update(_Pid, {Specs, N, _State}, _Info) when N < 2 ->
{Specs, N, stop};
update(_Pid, {Specs, N, _State}, {notTaken, Step}) ->
{Specs, N, Step};
update(_Pid, {Specs, N, _State}, {taken, Step}) ->
{Specs, N - 1, Step}.

所以我想在我的头文件中为这个函数中的不同参数添加这些额外的规范。我不知道该怎么做,有人可以帮我吗?

我试图这样做,但它给了我编译错误:
-spec update(pid(), tuple(tuple(), integer(), atom()), tuple(atom(), atom())) -> tuple(tuple(), integer(), atom()).
-spec update(pid(), tuple(tuple(), atom(), atom()), tuple(integer(), atom())) -> tuple(tuple(), atom(), atom()).
-spec update(pid(), tuple(tuple(), atom(), atom()), tuple(atom())) -> tuple(tuple(), atom(), atom()).

提前致谢。

最佳答案

在这里找到答案:
http://erlang.org/doc/reference_manual/typespec.html

我不得不使用';'

改变这个:

-spec update(pid(), tuple(tuple(), integer(), atom()), tuple(atom(), atom())) -> tuple(tuple(), integer(), atom()).
-spec update(pid(), tuple(tuple(), atom(), atom()), tuple(integer(), atom())) -> tuple(tuple(), atom(), atom()).
-spec update(pid(), tuple(tuple(), atom(), atom()), tuple(atom())) -> tuple(tuple(), atom(), atom()).

进入这个:
-spec update(pid(), tuple(tuple(), integer(), atom()), tuple(atom(), atom())) -> tuple(tuple(), integer(), atom());
(pid(), tuple(tuple(), atom(), atom()), tuple(integer(), atom())) -> tuple(tuple(), atom(), atom());
(pid(), tuple(tuple(), atom(), atom()), tuple(atom())) -> tuple(tuple(), atom(), atom()).

关于erlang - Erlang 头文件中同一函数的多个规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30452675/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com