Erlang - 为什么有时在单个模块中有多个-export()语句

时间:2017-12-16 15:33:15

标签: erlang

为什么有时单个模块中有多个-export()语句?

示例:

-module(ejabberd_config).
-author('alexey@process-one.net').

-export([start/0, load_file/1, reload_file/0, read_file/1,
     get_option/1, get_option/2, add_option/2, has_option/1,
     get_vh_by_auth_method/1,
     get_version/0, get_myhosts/0, get_mylang/0, get_lang/1,
     get_ejabberd_config_path/0, is_using_elixir_config/0,
     prepare_opt_val/4, transform_options/1, collect_options/1,
     convert_to_yaml/1, convert_to_yaml/2, v_db/2,
     env_binary_to_list/2, opt_type/1, may_hide_data/1,
     is_elixir_enabled/0, v_dbs/1, v_dbs_mods/1,
     default_db/1, default_db/2, default_ram_db/1, default_ram_db/2,
     default_queue_type/1, queue_dir/0, fsm_limit_opts/1,
     use_cache/1, cache_size/1, cache_missed/1, cache_life_time/1]).

-export([start/2]).

1 个答案:

答案 0 :(得分:3)

与其他语言一样,多导出有助于读取代码,例如:

%% Creation, inspection and conversion
-export([new/0,is_queue/1,is_empty/1,len/1,to_list/1,from_list/1,member/2]).
%% Original style API
-export([in/2,in_r/2,out/1,out_r/1]).
%% Less garbage style API
-export([get/1,get_r/1,peek/1,peek_r/1,drop/1,drop_r/1]).