2016-11-16 5 views
2

は、HTTPCライブラリ(http://erlang.org/doc/man/httpc.html#request-4)は、いくつかのタイプを定義しています。私のコードではErlang:モジュールの型宣言をインポートするにはどうすればいいですか?例えば

status_line() = {http_version(), status_code(), reason_phrase()} 
http_version() = string(), for example, "HTTP/1.1" 
status_code() = integer() 
reason_phrase() = string() 
content_type() = string() 
headers() = [header()] 
header() = {field(), value()} 

が、私は例えば、の検索結果を消費し、何か他のものを生産する、機能を書きたいです。しかし、rebar3 dialyzerは文句を言う:私はそれらを再使用できるように

===> Verifying dependencies... 
===> Compiling xxx 
===> Compiling src/httpabs.erl failed 
src/httpabs.erl:35: type headers() undefined 
src/httpabs.erl:35: type status_code() undefined 
src/httpabs.erl:35: type status_line() undefined 

は、どのように私はそれらの型宣言をインポートしていますか?

答えて

6

一般に、エクスポートされた関数の使用方法と同様に、モジュール名の前に別のモジュールからエクスポートされた型を使用します。module:type_name()

ただし、あなたが言及している種類はドキュメントでのみ使用されています。実際にはhttpcモジュールからエクスポートされません。

Erlang/OTPソースツリーで-export_typeディレクティブを検索できます。どのタイプが実際にエクスポートされているかを知る方法は他にありません。

+0

モジュールがそのタイプをエクスポートしない場合(httpcソースはhttps://github.com/erlang/otp/blob/maint/lib/inets/src/http_client/httpc.erlではないようです)私のために推奨される行動は何ですか?タイプのドキュメントをコピーして型宣言に貼り付けますか?タイプがエクスポートされていない場合、httpcは透析装置の使用をほかの人に期待していますか?私はここに何かがないと思う。 – Tommy

+1

はい、今のところコピー&ペーストして、 '-export_type'ディレクティブを追加してプルリクエストを送信してください。そうすれば、タイプは将来のErlangリリースで使用できます。 – legoscia

関連する問題