Nếu bạn muốn "có tên là" lập luận, với các giá trị mặc định có thể, bạn có thể sử dụng dòng lệnh này (từ một Appli đồ chơi tôi thực hiện):
erl -pa "./ebin" -s lavie -noshell -detach -width 100 -height 80 -zoom 6
lavie: bắt đầu làm gì khác hơn là khởi động ứng dụng erlang :
-module (lavie).
-export ([start/0]).
start() -> application:start(lavie).
mà lần lượt khởi động ứng dụng, nơi tôi được xác định giá trị mặc định cho tham số, đây là app.src (cốt thép xây dựng):
{application, lavie,
[
{description, "Le jeu de la vie selon Conway"},
{vsn, "1.3.0"},
{registered, [lavie_sup,lavie_wx,lavie_fsm,lavie_server,rule_wx]},
{applications, [
kernel,
stdlib
]},
{mod, { lavie_app, [200,50,2]}}, %% with default parameters
{env, []}
]}.
sau đó, trong mã ứng dụng, bạn có thể sử dụng init: get_argument/1 để nhận giá trị được liên kết với mỗi tùy chọn nếu nó được xác định trong dòng lệnh.
-module(lavie_app).
-behaviour(application).
%% Application callbacks
-export([start/2, stop/1]).
%% ===================================================================
%% Application callbacks
%% ===================================================================
start(_StartType, [W1,H1,Z1]) ->
W = get(width,W1),
H = get(height,H1),
Z = get(zoom,Z1),
lavie_sup:start_link([W,H,Z]).
stop(_State) ->
% init:stop().
ok.
get(Name,Def) ->
case init:get_argument(Name) of
{ok,[[L]]} -> list_to_integer(L);
_ -> Def
end.
Chắc chắn phức tạp hơn đề xuất @Hynek, nhưng nó giúp bạn linh hoạt hơn và tôi thấy dòng lệnh ít đục.
Cảm ơn Hynek ... tuyệt vời –
Thật kỳ lạ, tôi nhận được [foo, bar] không ["foo", "bar"] – quantumpotato
@quantumpotato: Lưu ý '-run'. Theo trang 'erl', _All đối số được chuyển thành chuỗi. Bạn đang sử dụng phiên bản nào? Thậm chí sau đó nó sẽ là một lỗi vì điều này không nên thay đổi phiên bản thành phiên bản. Nó sẽ phá vỡ các kịch bản hiện có. –