如何在erlang中实现接口?模块的结构是什么或如何设置?
我有一个分层架构,想要在每一层实现接口。允许需要以下层的图层处理某些任务以访问或调用这些任务。
这个接口模块在功能方面看起来如何?
答案 0 :(得分:3)
动态类型的Erlang世界中不存在Java接口或ML模块签名意义上的接口。您必须在评论中记录行为或提供透析器的-spec合同才能查看。
一般来说,接近某种语言的最佳方式是不要假设你可以将现有知识过多地映射到它中,除非你碰巧知道一种在概念上“接近”的语言。 Erlang附近的语言是Prolog和Scheme。更进一步的是Python和Ruby,但他们对OOP设计的依赖使他们进入了视野。任何静态类型的东西,Ocaml,Haskell,Java,C#,C ++等都绝对是遥不可及的。
答案 1 :(得分:-2)
Erlang中最接近的概念是user-defined behaviour。但是,它们往往很少使用。请注意,唯一检查的是功能的存在和优点。你无法测试模块实际上是否实现了某些行为;你只需要调用回调函数,如果模块碰巧“意外”导出具有相同名称的函数,那你就不走运了。