2011-01-20 5 views
0
다음 모듈을 감안할 때

와 TC :타이머 : 인수

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

내가 실행 (100)에 의해 호출.

{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)는 문자 ($ d 개 = 100) 아닌 정수로 해석됩니다 :와 쉘에서 나는이있다! 내 잘못은 어디에 있습니까?

답변

2

얼랑 (Erlang)에서 [100]"d"은 구별 할 수 없습니다. 위에 표시된 코드는 문제가 아닙니다. 얼랭 (Erlang) 셸은 도움이되고 (특정 도움말을 위해) [100]"d"으로 인쇄 할 수 있습니다. 인쇄 가능한 문자를 나타내는 정수만 들어있는 목록이기 때문입니다.

실제 문제는 위의 undef 오류입니다. 내 생각에 파서 모듈에는 parser:fct/1을 통해 호출하는 parser:loop/1 함수가 없습니다.

+0

네가 맞아! 나는 눈이 멀었다 : -export was missing! 감사합니다 – Bertaud

0

컴파일에 대해 경고를 받았습니까? 사용하지 않는 기능에 관한 메시지가 적어도 하나는 보일 것입니다. 학습하면서 경고 메시지가 나타나면 조사하고 이해하고 수정하십시오. 일반적으로 말하자면 코드에 경고 메시지가 없기를 원할 것입니다.

함수가 MFA 스타일로 호출 된 경우 소스 코드로 내 보내야합니다. 당신이 보여준 바로는 그것이 "fct"또는 "loop"로 명명되었는지 명확하지 않습니다. 그래서 당신의 이름이 일관성이 있는지 확인하고 그것이 수출되었는지 확인하십시오 : 소스 코드에서 이것을 필요로합니다 (함수가 "loop"라고 가정하고 1 개의 인수를 취한다고 가정) :

-export [[loop/1]).

얼랭의 오류 메시지는 처음에는 해독하기가 까다로울 수 있습니다. 더 많은 것을 읽고 더 익숙해 지려면 시간을내어 앞으로 나아갈 시간을 많이 절약 할 수 있습니다.

+0

당신도 옳습니다. 몇 가지 대답을 수락하는 법을 모르겠습니다 ... – Bertaud