列表中的Erlang整数,并在公式的

时间:2018-08-07 14:38:20

标签: erlang

我正在学习Erlang以及如何使用列表,但是我遇到了问题。我正在编写一个用于解决数学问题的程序,例如Tot = X*Y*Z.

首先,我输入一个变量来设置要解决的问题数量,

inTestes(Tests) ->AmountOfTests = Tests.

现在要保存我的不同变量,我还做了一个记录:-record(specs,{x,y,z}).,其中包含一个带有3个变量的连音号。

我尝试填充此连音号:inSpecs(X,Y,Z)-> #specs =[x=X,y=Y,z=Z].但这不起作用。 我认为我需要使用lists:append(The variables here)->#specs{x=X,y=Y,z=Z}之类的东西,但似乎并没有正确。 当我刚做inSpecs(X,Y,Z)-> Specs =[X,Y,Z].时,会得到1个列表,例如[10,20,30]

如何根据AmountOfTests保存多个这样的列表?

有人可以给我一些指导吗?

2 个答案:

答案 0 :(得分:3)

  

我尝试填充此小号:

inSpecs(X,Y,Z)-> #specs =[x=X,y=Y,z=Z].
     

但这不起作用

为什么您认为这应该起作用?您是否认为以下方法可以创建列表:

MyList = ! 3, 4; 5].

计算机编程需要精确的 语法-7个字符中的5个不是正确的。

请指向任何可以使用以下语法创建记录的书,网站或文档:

#specs =[x=X,y=Y,z=Z].

这是您可以做的

-module(my).
-compile(export_all).
-record(specs, {x,y,z}).

inSpecs(X,Y,Z)-> #specs{x=X,y=Y,z=Z}.

在外壳中:

1> c(my).
my.erl:2: Warning: export_all flag enabled - all functions will be exported
{ok,my}

2> Record = my:inSpecs(10, 20, 30). 
{specs,10,20,30}

3> rr("my.erl").
[specs]

4> Record.
#specs{x = 10,y = 20,z = 30}

5> Record#specs.x.
10
  

我刚做inSpecs(X,Y,Z)-> Specs =[X,Y,Z]时。我得到1个清单   示例[10,20,30]

     

如何根据   AmountOfTests?

假设AmountOfTests等于3,inSpecs/3应该返回什么?

回复评论

在这里,您可以使用相同的数据创建三个规格:

-module(my).
-compile(export_all).
-record(specs, {x,y,z}).

inSpecs(X,Y,Z)-> #specs{x=X,y=Y,z=Z}.

create_specs(0) -> [];
create_specs(N) -> [inSpecs(1,2,3) | create_specs(N-1)].

在外壳中:

1> c(my).
my.erl:2: Warning: export_all flag enabled - all functions will be exported
{ok,my}

2> rr(my).
[specs]

3> Specs = my:create_specs(3).
[#specs{x = 1,y = 2,z = 3},
 #specs{x = 1,y = 2,z = 3},
 #specs{x = 1,y = 2,z = 3}]

或者,如果您在这样的列表中包含规格数据:

SpecData = [ [1,2,3], [12,13,14], [7,8,9] ].

然后您可以创建如下函数:

-module(my).
-compile(export_all).
-record(specs, {x,y,z}).

inSpecs(X,Y,Z)-> #specs{x=X,y=Y,z=Z}.

create_specs([]) -> [];
create_specs([ [X,Y,Z] | Tail]) -> 
    [inSpecs(X,Y,Z) | create_specs(Tail)].

在外壳中:

17> f().
ok

18> c(my).
my.erl:2: Warning: export_all flag enabled - all functions will be exported
{ok,my}

19> SpecData = [ [1,2,3], [12,13,14], [7,8,9] ].
[[1,2,3],[12,13,14],[7,8,9]]

20> Specs = my:create_specs(SpecData).          
[#specs{x = 1,y = 2,z = 3},
 #specs{x = 12,y = 13,z = 14},
 #specs{x = 7,y = 8,z = 9}]

答案 1 :(得分:2)

似乎您正在尝试从列表中获取3个值并将其放入记录中。您可以使用模式匹配来实现。如果您知道要发送的列表中有3个值,则可以执行以下操作:

inTests( [X, Y, Z] ) ->
    #specs{ x = X, y = Y, z = Z}.