【问题标题】:How to make a sequence function for lists?如何为列表制作序列函数?
【发布时间】:2016-02-14 05:38:58
【问题描述】:

我正在尝试在 Erlang 中创建一个包含多个整数的列表。因此,如果我传入5,它将创建一个包含[1,2,3,4,5] 的列表。这是我目前的代码。

所以我想将列表称为tower1

-module(towers).

-export([create_towers/1]).

create_towers( 0 ) -> [];
create_towers( N ) when N > 0 -> create_towers( N-1 ) ++ [N].

【问题讨论】:

  • 喜欢列表:seq(1, 5) ?

标签: list erlang


【解决方案1】:

代码不错,就是语法问题

-module(towers).

-export([create_towers/1]).

create_towers(0) ->
    [];
create_towers(N) when N > 0 ->
    create_towers(N-1) ++ [N].

工作正常

Eshell V7.1  (abort with ^G)
(emacs@Mac-mini-de-Rodrigo)1> c("/Users/rorra/erlang/towers", [{outdir, "/Users/rorra/erlang/"}]).
{ok,towers}
(emacs@Mac-mini-de-Rodrigo)2> towers:create_towers(0).
[]
(emacs@Mac-mini-de-Rodrigo)3> towers:create_towers(10).
[1,2,3,4,5,6,7,8,9,10]

如果你想让它调用创建的列表 tower1:

 (emacs@Mac-mini-de-Rodrigo)2> Tower1 = towers:create_towers(5).
 [1,2,3,4,5]

注意所有变量都以大写字母开头,如果要命名模块为towers1,请将文件名改为tower1.erl并添加:

-module(tower1).

-export([create_towers/1]).

create_towers(0) ->
    [];
create_towers(N) when N > 0 ->
    create_towers(N-1) ++ [N].

然后你可以像这样调用 towers1:create_towers(N):

(emacs@Mac-mini-de-Rodrigo)2> MyVar = tower1:create_towers(5).
[1,2,3,4,5]

【讨论】:

  • 如何调整代码以将我创建的列表命名为 tower1?
  • 塔 1 = 塔:创建塔(10)。 erlang 上的所有变量都以大写字母开头。如果要将模块命名为 towers1,则可以调用 towers1:create_towers(10),然后将文件名更改为 towers1.erl 并更改 -module(towers)。到 -module(towers1)。
  • 谢谢,这就解释了!
  • 很好,欢迎点击投票按钮下方的 V 来接受我的答案作为有效答案:)
  • 顺便说一句,我以为你在做那个代码是为了练习,在现实世界的软件上使用它是不值得的,你可以写lists:seq(0,5),这样就可以建立列表了。跨度>
猜你喜欢
  • 2021-12-05
  • 2019-09-12
  • 2020-04-18
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多