External function call Erlang
我试图在Erlang中调用一个函数(来自外部模块)。两个beam文件都位于同一目录中。
1 2 3 | -module(drop2). -export([fall_velocity/1]). fall_velocity(Distance) -> math:sqrt(2 * 9.8 * Distance). |
那我打电话来
1 2 3 4 5 6 | -module(ask). -export([term/0]). term() -> Input = io:read("Enter {x,distance} ? >>"), Term = element(2,Input), drop2:fall_velocity(Term). |
号
它给出了以下错误。我测试了各个模块的错误。它正在编译,没有任何错误或警告。
1 2 3 4 5 | 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) |
不知道它为什么抛出算术表达式错误。
您可以阅读文档来确定结果是
1 2 3 4 |
这意味着您需要以不同的方式解构
1 2 3 4 5 | -module(ask). -export([term/0]). term() -> {ok, {_, Distance}} = io:read("Enter {x, distance} >"), drop2:fall_velocity(Distance). |
号