オープンソース プロジェクトでは、仕様を記述する次の 2 つの方法を目にします。
コメントの仕様
@spec start_link() -> {ok, pid()}
ソースコードの仕様
-spec start_link() -> {ok, pid()}
違いは何ですか?どちらが優先されますか?
コメント ( @spec
) のバージョンは、ソース コード ( -spec
) のバージョンより前です。後者が好ましい。
EDoc ドキュメントによると:
注: 以下で説明する構文は、関数を指定するために引き続き使用できますが、型と関数の仕様で説明されているように、代わりに Erlang 仕様をソース コードに追加することをお勧めします。このように、Dialyzer の分析は、ドキュメントの一貫性と最新性を維持するプロセスで利用できます。同じ名前の関数仕様 (@spec タグの後に型が続く) がない限り、Erlang 仕様が使用されます。