我有一个命令行程序,该程序接受两个数字作为参数,我这样运行它:
erl -noshell -s weight bmi 3 9
但是我不知道如何处理负数。我试图将它们作为字符串-extra
等进行传递。根据文档,Erlang似乎将以连字符开头的所有内容都解释为标志:
以字符-(连字符)开头的任何参数都将解释为标志
因此,问题是:如何使Erlang例如考虑-10
作为数字而不是标志?
erl -noshell -s weight bmi -10 9
但是我无法弄清楚如何处理负数(试图以-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()
返回参数列表。第一个arg是列表[45,57]
,可以用简写形式创建"-9"
; 第二个arg是列表[97,98,99]
,可以用简写形式创建"abc"
。此外,列表/字符串可以使用转换为整数list_to_integer()
。整数45
是连字符57
的ascii代码,整数是字符9的ascii代码。list_to_integer()
它足够聪明,可以处理负号。同样,整数97,98,99
是字符的ASCII码a,b,c
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句