Erlang打印N次

时间:2018-12-11 04:20:26

标签: recursion erlang

我正在尝试教自己一些erlang,并且不断收到我不理解的错误。

我正在尝试制作一个函数,该函数采用整数N并打印N次“ Hello World”,这样我就可以热交换消息了(到那部分为止)。

我的代码:

-module(repeater).
-export([repeat/1], [start/0]).

repeat(Num) when is_Integer(Num), Num > 0 ->

    if Num == 1 ->
        io:fwrite("Hello World"),
        io:fwrite("~n");

     else ->
        io:fwrite(pass(Num - 1));

     true ->
        io:fwrite("I have no idea what is happening")

     end.

start() ->
    repeat(3).

我收到的错误消息是:

 repeater.erl:7: bad export declaration 
 repeater.erl:11: Warning: function pass/1 is unused
 repeater.erl:21: Warning: function start/0 is unused

我不知道为什么它说它是“未使用”。

我发现这种语言很难接受,因为我什至无法获得if else块正常工作

1 个答案:

答案 0 :(得分:1)

尝试更换
-export([repeat/1], [start/0]).

-export([repeat/1, start/0]).

关于后卫表达式,您在is_Integer()中输入了错字,应该是is_integer()

关于您的if状况,
没有必要使用else -> io:fwrite(pass(Num-1))。除true以外的任何原子的求值为false,因此除true以外的任何原子在这里都是无用的。 if至少需要有一个子句的值为true,并且由于您已经有了一个包罗万象的子句true -> io:fwrite("I have no idea what is happening"),如果Num较大,将会调用该子句大于1,则不需要任何其他子句