Wie implementiert man eine Schnittstelle in Erlang? Wie ist die Struktur der Module oder wie ist sie aufgebaut?
Ich habe eine geschichtete Architektur und möchte die Schnittstellen in jeder Ebene implementieren. Erlauben der Schicht, die die untere Schicht benötigt, um eine Aufgabe zu bearbeiten, um auf diese Aufgaben zuzugreifen oder sie aufzurufen.
Wie würde dieses Schnittstellenmodul hinsichtlich der Funktionalität aussehen?
Eine Schnittstelle im Sinne einer Java-Schnittstelle oder einer ML-Modul-Signatur existiert in der dynamisch typisierten Erlang-Welt nicht. Sie müssen das Verhalten in einem Kommentar dokumentieren oder einen speziellen Vertrag für den Dialysator bereitstellen.
Im Allgemeinen ist der beste Weg, sich einer Sprache zu nähern, indem man nicht voraussetzt, dass man sein vorhandenes Wissen zu sehr in sie einordnen kann, es sei denn, man kennt eine Sprache, die in Begriffen "nahe" ist. Sprachen in der Nähe von Erlang sind Prolog und Scheme. Weiter kommt Python und Ruby, aber ihre Abhängigkeit von einem OOP-Design bringt sie in den Horizont. Alles statisch Getippte, Ocaml, Haskell, Java, C #, C ++ usw. sind definitiv jenseits des Horizonts.
Das nächste Konzept in Erlang ist benutzerdefiniertes Verhalten . Sie werden jedoch eher selten verwendet. Beachten Sie, dass das einzige, was überprüft wird, Existenz und Arität der Funktionen ist. Sie können nicht testen, dass das Modul tatsächlich etwas Verhalten implementiert; Sie rufen nur die Callback-Funktionen auf und wenn das Modul zufälligerweise Funktionen mit demselben Namen exportiert, haben Sie kein Glück.