たぶん、それはグローバル定数だと思っていたかもしれませんがOpts1
、erlangにはグローバル変数はありません。
マクロ定義を使用して、グローバル定数(実際にはコンパイル時に置き換えられる)のようなものを使用できます。
-module(my_server).
-record(server_opts,
{port,
ip="127.0.0.1",
max_connections=10}).
%% macro definition:
-define(Opts1, #server_opts{port=80}).
%% and use it anywhere in your code:
my_func() ->
io:format("~p~n",[?Opts1]).
PS
シェルからのレコードを使用します。my_server.hrl
仮定-レコードの定義を含むファイルを作成しましたserver_opts
。まず、関数を使用してレコード定義をロードする必要がありますrr("name_of_file_with_record_definition")
。その後、シェルでレコードを操作する準備が整います。
1> rr("my_record.hrl").
[server_opts]
2>
2> Opts1 = #server_opts{port=80}.
#server_opts{port = 80,ip = "127.0.0.1",
max_connections = 10}
3>
3> Opts1.
#server_opts{port = 80,ip = "127.0.0.1",
max_connections = 10}
4>