HTTPクライアントパッケージTeslaのソースコードを見ていて、Tesla.get/2関数のソースを見つけようとしていますが、他のhttpメソッドの関数と同じようにここで見つけることはできません。 BTWは、オンラインドキュメントからの 'ソースの表示'リンクもできません。私はうんざりしている、誰かがこれを説明することができますか?メソッドの関数呼び出しはElixir Teslaでどのように定義されていますか?ソースコードはどこにありますか?
0
A
答えて
1
このパッケージは、メタプログラミングを使用してすべてのHTTP動詞の機能を生成しています。動詞の名前がこのリストには、繰り返し処理され、機能が動的に各hereのために生成されhere
@http_verbs ~w(head get delete trace options post put patch)a
を定義しています。各関数の実際の本体は、generate_api
関数hereで定義されています。だから、Tesla.get/2
の実際のソースはthisです:
def unquote(method)(url, body) do
request(method: unquote(method), url: url, body: body)
end
あなたは:get
とmethod
に置き換えた場合、あなたはTesla.get/2
の効果的な定義を取得:
def get(url, body) do
request(method: :get, url: url, body: body)
end
あなたがのコンパイルErlangのフォームを読むことができますモジュールのコードも同様です:
{_, _, bytecode} = :code.get_object_code(Tesla)
{:ok, {_, [{:abstract_code, {_, ac}}]}} = :beam_lib.chunks(bytecode, [:abstract_code])
ac |> :erl_syntax.form_list |> :erl_prettypr.format |> IO.puts
出力は巨大ですが、あなたは慎重に見れば、あなたは、生成されたすべてのget/2
節わかります
...
get(#{'__struct__' := 'Elixir.Tesla.Client'} = [email protected],
[email protected]) ->
request([email protected], [{method, get}, {url, [email protected]}]);
get([email protected], [email protected]) when erlang:is_function([email protected]) ->
get(#{post => [], pre => [], 'fun' => [email protected],
'__struct__' => 'Elixir.Tesla.Client'},
[email protected]);
get([email protected], [email protected]) when erlang:is_list([email protected]) ->
request([{method, get}, {url, [email protected]}] ++ [email protected]).
...
を
関連する問題
- 1. このJavaメソッドはどのように呼び出されていますか?
- 2. 呼び出す前にこの関数を定義するにはどうすればよいですか?
- 3. この引数は、呼び出された関数にどのように移行していますか?
- 4. このメソッドはどのように呼び出されますか?
- 5. これらのメソッドはどこから呼び出されていますか?
- 6. java.awt.Graphicsのメソッドはどこに定義されていますか?
- 7. 'startActionMode'メソッドはどのように呼び出す必要がありますか?
- 8. C#は、メソッド呼び出しで複数のインターフェイス間でどのように曖昧さがありますか?
- 9. php関数はどこで定義されていますか?
- 10. 定義されているすべての関数が呼び出されているかどうかを確認する方法はありますか?
- 11. emberjs関数はどのように呼び出されますか?
- 12. Reactのソースコードでライフサイクルメソッドはどこに定義されていますか?
- 13. 「new」という呼び出しは、ユーザー定義の配置割り当て関数をどのように呼び出しますか?
- 14. コマンドラインツールのハンドルバーブロックヘルパー関数はどのように定義されていますか?
- 15. Mapメソッドはどこで呼び出されますか?
- 16. $はどのように設定しますか? PS1で呼び出される関数では?
- 17. ユーザー定義関数をどこにでも呼び出せますか? (matlab)
- 18. テストからCoherence(Elixir)をどのように呼びますか?
- 19. displayAd()メソッドはどのように呼び出すことができますか?
- 20. TextView.setText(..)メソッドのソースコードはどこにありますか?
- 21. ngrx:reducers関数が呼び出されたときにどのように呼び出されますか?
- 22. C++どのように正しいメソッドが呼び出されますか?
- 23. Elixirモジュールで定数をどのように定義しますか?
- 24. perlソースコードで `use`はどこに定義されていますか?
- 25. jQuery.ajaxはjQueryソースコードでどこに定義されていますか?
- 26. OndestroyViewはどのように呼び出されますか?
- 27. hook_ENTITY_TYPE_create()はどのように呼び出されますか?
- 28. Decoratorパターンチェーンメソッドはどのように呼び出されますか?
- 29. 定義されたパラメータを持つ定義をどのように呼び出すのですか?それには自己パラメータがありますか?
- 30. 呼び出された後、呼び出された関数はどのように呼び出し元に戻りますか?