但我不知道如何处理负数(试图
作为字符串传递,带有 -extra 等。
以下是如何使用-extra 标志的示例:
-module(weight).
-compile(export_all).
bmi() ->
[First|_Rest] = init:get_plain_arguments(),
FirstAsInt = list_to_integer(First),
io:format("~w~n", [FirstAsInt]),
io:format("~w~n", [FirstAsInt + 1]).
在外壳中:
1> c(weight).
在命令行:
~/erlang_programs$ erl -noshell -s weight bmi -extra -9
-9
-8
在before the first flag 或-- 之后输入负数对我不起作用。
如果您尝试以下代码,事情可能会更清楚:
-module(weight).
-compile(export_all).
bmi() ->
Args = init:get_plain_arguments(),
io:format("~w~n", [Args]).
在命令行:
$ erl -noshell -s weight bmi -extra -9 abc
[[45,57],[97,98,99]]
init:get_plain_arguments() 返回参数列表。第一个参数是列表[45,57],可以使用简写符号"-9" 创建;第二个参数是列表[97,98,99],可以使用简写符号"abc" 创建。此外,可以使用list_to_integer() 将列表/字符串转换为整数。整数45 是连字符的ascii 代码,整数57 是字符9 的ascii 代码。list_to_integer() 足够聪明,可以处理负号。同样,整数97,98,99 是字符a,b,c 的ascii 代码。