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
함수는 비공개이거나 다른 모듈에서 호출 할 수 없습니다. 사용시기와 사용시기를 어떻게 알 def
수 defp
있습니까? 다른 모듈에 대해 알 필요가 있거나 알 필요가없는 것에 따라 다릅니다. 일반적인 디자인 패턴은 모듈이 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 함수를 래핑합니다.
'IT Share you' 카테고리의 다른 글
경로 값을 포함한 URL.Action () (0) | 2020.12.08 |
---|---|
차단 및 비 차단 하위 프로세스 호출 (0) | 2020.12.08 |
현재 디렉토리를 bash 기록에 저장 (0) | 2020.12.08 |
.NET / C #에서 다른 프로세스의 명령 줄 인수를 가져올 수 있습니까? (0) | 2020.12.08 |
저장 프로 시저 (.net)의 테이블 값 매개 변수에 빈 목록 또는 null 값 바인딩 (0) | 2020.12.08 |