【问题标题】:External function call Erlang外部函数调用 Erlang
【发布时间】:2014-02-04 21:17:20
【问题描述】:

我正在尝试在 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).

它给出了以下错误。我测试了各个模块的错误。它正在编译,没有任何错误或警告。

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)

不知道为什么会抛出算术表达式错误。

【问题讨论】:

    标签: erlang erlang-shell


    【解决方案1】:

    您可以阅读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).
    

    【讨论】:

      猜你喜欢
      • 2018-04-22
      • 2013-01-12
      • 1970-01-01
      • 2018-06-12
      • 2013-02-01
      • 2016-03-30
      • 2018-09-24
      • 2021-05-31
      • 2013-06-01
      相关资源
      最近更新 更多