static variables?

Torbjorn Tornkvist tobbe@REDACTED
Tue Aug 22 16:03:42 CEST 2006


I should probably not show you this but...
--------------------------------------------
# cat test.erl
-module(test).
-export([test/0]).

-fields(["a","b"]).


test() -> test.

# erl
Erlang (BEAM) emulator version 5.5 [source] [async-threads:0] [hipe]
Eshell V5.5  (abort with ^G)
1> element(2, lists:keysearch(fields, 1, test:module_info(attributes))).
{fields,["a","b"]}


--Tobbe




Yariv Sadan wrote:
> Hi,
> 
> Strangely, I find myself at a crossroads where I would like to have
> static (i.e. per-module) variables. Yes -- I know -- this would be a
> gross violation of the shared-nothing principle -- but then I would be
> just as happy if all static variables were "final" so there's no way
> that two processes would trample on the same data.
> 
> The situation is actually pretty simple: I have a 'person' module that
> corresponds to a database table. This module has a (static) list of
> fields. I would like to be able to access this static list from the
> module's functions without having to reconstruct it inside the
> function every time by calling a function such as
> 
> fields() ->
>  ["name", "age"].
> 
> Here's basically what I want to have:
> 
> -module(person).
> -compile(export_all).
> 
> fields = ["name", "age"].
> 
> get_fields() ->
>  fields.
> 
> Is there any way to do this in Erlang???
> 
> (I looked at the process dictionary, but it is per process, not per
> module).
> 
> Thanks,
> Yariv
> 




More information about the erlang-questions mailing list