[erlang-questions] How to avoid copying code?

Kostis Sagonas <>
Fri Nov 24 18:37:08 CET 2006


 wrote:
> Hello!
> 
> I have a couple of modules (20-30) which define the same macros, like
> this:
> module1.erl:
> -define(FOO, "something1").
> -define(BAR, "else1").
> 
> module2.erl:
> -define(FOO, "something2").
> -define(BAR, "similar2").
> 
> And I also have a function in these modules that return the data of
> these macros:
> 
> get_data() ->
>  	{?FOO, ?BAR}.
> 
> Obviously this function definition is exactly the same in all 20-30
> modules, which I don't really like. Is there a way to define this
> function only once? In Java I'd create an abstract ancestor class for
> module1 and module2, declare the FOO and BAR variables there, also
> implement the get_data() in the ancestor class and assign values to FOO
> and BAR in the constructor of module1 and module2 (there is only one
> instance of module1, etc. classes in the program).

I am not sure this is what you are asking, but if you just want to avoid 
code duplication, put the function in an .hrl file and then use an 
-include in its place.

Kostis



More information about the erlang-questions mailing list