timer:带参数的tc

时间:2011-01-20 18:24:03

标签: erlang

给出以下模块:

run(N)-> timer:tc(?MODULE,fct,[N]).

我通过run(100)调用它。从一个shell,我有这个:

{1, {'EXIT',{undef,[{parser,loop,"d"}, {timer,tc,3}, {erl_eval,do_apply,5}, {shell,exprs,7}, {shell,eval_exprs,7}, {shell,eval_loop,3}]}}}

100被解释为char($ d = 100)而不是整数! 我的错在哪里?

2 个答案:

答案 0 :(得分:2)

在Erlang中,[100]"d"无法区分,上面显示的代码不是问题。 Erlang shell非常有用(对于某些帮助值)并将[100]打印为"d",因为它是一个仅包含表示可打印字符的整数的列表。

真正的问题是上面的undef错误,我的猜测是你的解析器模块不包含你通过parser:loop/1调用的函数parser:fct/1

答案 1 :(得分:0)

您的编辑是否收到任何警告?我怀疑你会看到至少一条关于未使用功能的消息。在您学习的过程中,如果您看到警告消息,则进行调查,了解并更正。一般来说,您希望代码没有警告消息。

如果在MFA样式中调用函数,则必须在源代码中导出它。根据你所展示的内容,不清楚它是否被命名为“fct”或“loop”。因此,请确保您的命名是一致的,并确保它是导出的:您需要在源代码中使用它(假设该函数被称为“循环”并且需要1个参数):

-export([环路/ 1])。

首先,Erlang中的错误消息可能很难解密。花些时间阅读更多内容并熟悉它们,您将为自己节省大量时间。