Bir başlık dosyasında bir işlev belirtmeye çalışıyorum. böylece gibi: birden çok farklı parametrelere sahiptir çünküErlang başlık dosyasında aynı işlev için birden çok özellik
-spec update(pid(), tuple(tuple(), integer(), atom()), tuple(atom(), atom())) -> tuple(tuple(), integer(), atom()).
Şimdi bu işlev için bazı ekstra şartname eklemek istiyorum.
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}.
Bu ek özellikler, bu işlevdeki farklı parametreler için, başlık dosyasımda eklemek istiyorum. Bunu nasıl yapacağımı bilmiyorum, birileri bana yardım edebilir mi?
Bunu yapmaya çalıştım ama bana derleme hataları veriyor: önceden-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()).
teşekkür ederiz.
. Yine de neden bir başlık dosyasına koymak istediğinizi sorabilir miyim? –
Kodumu sağlam yapmak ve çoğaltılabilecek işlevselliği vardır. –
Geri çekme mekanizmasını davranışlarla kullanmayı düşündünüz mü? Tip spesifikasyonunu birçok yerde tekrar etmekten ziyade davranış tanımına koymanıza izin veriyorlar. –