2013-01-06 6 views
1

새로운 모듈을 만들 겠지만 먼저 만족시켜야 할 템플릿 (인터페이스/계약)을 정의하고 싶습니다. 그렇지 않으면 행동을 사용해야합니까, 아니면 더 선호하는 것이 있습니까? 해결책? 분명히, 나는 그 기능의 다른 구현에서 나중에 떨어질 수있는 방식으로 내 [중요하지 않은 (non-trivial)] 모듈을 만들고 싶습니다.얼랑의 인터페이스 기반 디자인

나는 적절하고 효율적인 습관을 만들고 싶습니다. 검색은 주제에 대한 즉각적인/유용한 정보를 찾지 않습니다.

감사합니다.

답변

3

erlang에서는 동일한 유형의 동일한 메소드를 모듈에 허용 할 수있다. 어떤 종류의 스펙 및/또는 계약 거기에는 행동과 함께 R15 기능과 -callback을 사용하여 투석기가 사용자를 확인할 수있는 유형 지정을 할 수 있습니다. 그로부터 일반적인 좋은 아이디어가 적용됩니다. 추상화에서 얻은 값을 모듈 외부의 추상으로 간주하십시오. 그렇지 않으면 간단한 드롭 인 대체가 효과적이지 않을 것입니다.

저는 종종 인터페이스 모듈을 가지고 erlang을 추상화합니다. 내가 신청서 foo을 쓰고 있다고 가정 해 봅시다. 나는 종종 모듈 foo을 가지고 있으며이 모듈은 응용 프로그램을 사용하는 유일한 방법입니다. 다른 방법으로 응용 프로그램을 호출 할 수 없습니다. 대형 시스템의 경우 공개적으로 노출되는 모듈이 더 많지만 기본 아이디어는 노출 목록을 작게 유지하는 것입니다.

이렇게하면 팩터 드 모듈 뒤에있는 것을 원하는대로 다시 쓸 수 있습니다. 프로세스를 추가하거나 감독 트리를 변경하는 등의 결정을 내릴 수 있습니다.

Erlang의 키는 프로세스간에 프로토콜을 지정하는 경우가 많습니다. 그리고 그것을 안정되게 유지하십시오. 프로토콜은 프로세스가 상태를 공유 할 수 없기 때문에 디커플링을 강제합니다. 나중에 코드의 일부를 다시 디자인하려는 경우 유용합니다.

1

행동이 당신의 유일한 옵션은 기본적으로 있습니다 :( 나는이 목적을 위해 무겁게을 사용하지만 정말 대신 ML 펑에 더 가깝다 뭔가를 싶어요.

인터페이스의 모듈 규모 이하로, 고차있다 함수는 타입 애노테이션과 함께 최적화되지 않는다.