所以我在过去的八个小时里一直在使用Erlang,而且我花了两个人对着键盘敲击我试图弄清楚我的控制台一直在返回的异常错误.
我正在写一个骰子程序来学习二郎.我希望它能够通过erlang解释器从控制台调用.程序接受一些骰子,并且应该生成一个值列表.每个值应该在1到6之间.
我不会厌倦我为尝试解决问题(随机工程)而做出的几十个微观变化,但我会发布我的代码和错误.
来源:
-module(dice2).
-export([d6/1]).
d6(1) ->
random:uniform(6);
d6(Numdice) ->
Result = [],
d6(Numdice, [Result]).
d6(0, [Finalresult]) ->
{ok, [Finalresult]};
d6(Numdice, [Result]) ->
d6(Numdice - 1, [random:uniform(6) | Result]).
Run Code Online (Sandbox Code Playgroud)
当我从我的控制台运行程序时......
dice2:d6(1).
...我得到一个像预期的一到六个随机数.但是,当我使用任何高于1的数字作为参数运行相同的函数时,我得到以下异常...
**异常错误:没有匹配dice2的函数子句:d6(1,[4 | 3])
...我知道II没有匹配参数的函数,但我不知道如何编写带有变量参数的函数,以及可变数量的参数.
我尝试修改有问题的功能....
d6(Numdice, [Result]) ->
Newresult = [random:uniform(6) | Result],
d6(Numdice - 1, Newresult).
Run Code Online (Sandbox Code Playgroud)
......但我得到了同样的错误.有谁知道这里发生了什么?