2014-01-16 4 views
0

Я пытаюсь вызвать функцию (из внешнего модуля) в erlang. оба файла луча расположены в одном каталоге.Внешний вызов функции Erlang

-module(drop2). 
-export([fall_velocity/1]). 
fall_velocity(Distance) -> math:sqrt(2 * 9.8 * Distance). 

Тогда я звоню

-module(ask). 
-export([term/0]). 
term() -> 
Input = io:read("Enter {x,distance} ? >>"), 
Term = element(2,Input), 
drop2:fall_velocity(Term). 

дает следующие error.I тестирование отдельных модулей на наличие ошибок. он компилируется без каких-либо ошибок или предупреждений.

Eshell V5.10.2 (abort with ^G) 
1> ask:term(). 
Enter {x,distance} ? >>{test,10}. 
** exception error: an error occurred when evaluating an arithmetic expression 
in function drop2:fall_velocity/1 (drop2.erl, line 3) 

Не знаете, почему он бросает арифметическое выражение.

ответ

3

Вы можете прочитать documentation, чтобы выяснить, что результат {ok, Term}. Вы можете попробовать io:read/1 функцию в консоли, то вы увидите следующее:

1> io:read("Enter > "). 
Enter > {test, 42}. 
{ok,{test,42}} 
2> 

Это означает, что вам нужно разобрать результат io:read/1 по-разному, например, как это:

-module(ask). 
-export([term/0]). 
term() -> 
    {ok, {_, Distance}} = io:read("Enter {x, distance} > "), 
    drop2:fall_velocity(Distance). 
Смежные вопросы