1. ホーム
  2. elixir

[解決済み] def` と `defp` の違いは何ですか?

2022-02-19 09:06:09

質問

Programming Phoenixの本を読んでいるのですが、以下の違いはなんでしょうか? defdefp があります。

私のコントローラにはいくつかの関数があります。そのほとんどはこのようなアクションです。

def new (conn, _params) do
...
end

この本では、このコントローラの中に、このような典型的なコントローラアクションではない別の関数を作成するように書かれていました。

defp user_videos(user) do
...
end

そこで質問ですが、どのようなタイミングで defp を使用し、いつ def のような関数が定義されている場合、Elixirではどうなるのでしょうか?

どのように解決するのですか?

から Elixirのモジュール内関数に関するドキュメント :

モジュール内部で、関数を定義するには def/2 で、プライベート関数は defp/2 . で定義された関数は def/2 は他のモジュールから呼び出すことができますが、プライベート関数はローカルにしか呼び出すことができません。

そこで defp はプライベート関数を定義しています。