IT Share you

Phoenix Framework에서`def`와`defp`의 차이점은 무엇입니까?

shareyou 2020. 12. 8. 20:26
반응형

Phoenix Framework에서`def`와`defp`의 차이점은 무엇입니까?


나는 프로그래밍 피닉스 책을 통해 갈거야 내가 무슨 차이 사이 궁금 def하고 defp있다.

내 컨트롤러에는 여러 기능이 있습니다. 대부분은 다음과 같은 작업입니다.

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

이 책은이 컨트롤러에서 다음과 같은 일반적인 컨트롤러 작업이 아닌 다른 기능을 만들도록했습니다.

defp user_videos(user) do
...
end

그래서 제 질문은 Phoenix Framework의 컨트롤러 내부에서 함수를 정의 defp할 때 언제 사용 하고 언제 사용해야하는지 어떻게 알 수 있는가 def입니다.


에서 모듈 내에서 기능에 대한 비약의 설명서 :

모듈 내부에서, 우리와 기능을 정의 할 수 있습니다 def/2및 민간 기능을 함께 defp/2. 로 정의 된 함수 def/2는 다른 모듈에서 호출 할 수있는 반면 개인 함수는 로컬로만 호출 할 수 있습니다.

더 많은 질문이 있으면 해당 문서를 읽으십시오.


그래서 제 질문은 피닉스 프레임 워크의 컨트롤러 내부에서 함수를 정의 할 때 defp를 언제 사용할지, 언제 def를 사용할지 어떻게 알 수 있는가입니다.

def모듈의 함수는 다른 모듈에서 호출 할 수있는 반면 defp함수는 비공개이거나 다른 모듈에서 호출 할 수 없습니다. 사용시기와 사용시기를 어떻게 알 defdefp있습니까? 다른 모듈에 대해 알 필요가 있거나 알 필요가없는 것에 따라 다릅니다. 일반적인 디자인 패턴은 모듈이 def함수의 모든 동작을 래핑 하는 부모 함수 를 제공하는 것입니다 defp.

defmodule MyModule do

  def function do
    # call all the defp functions below to do something
  end

  defp function2 do
    # do something that no other module cares about or needs to know about
  end

  defp function3 do
    # do something that no other module cares about or needs to know about
  end

  defp function4 do
    # do something that no other module cares about or needs to know about
  end
end

다음은 SEC 파일링을위한 파서를 사용한 예입니다. SEC Company Filings Parser . main def메소드는 다른 모듈이 실제로 알 필요가없는 모든 private 함수를 래핑합니다.

참고 URL : https://stackoverflow.com/questions/35735762/whats-the-difference-between-def-and-defp-in-the-phoenix-framework

반응형