我正在尝试教自己一些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块正常工作
答案 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,则不需要任何其他子句