繁体   English   中英

Erlang:从控制台使用include?

[英]Erlang: using include from the console?

include 伪指令通常用于.erl文件顶部的.hrl文件。

但是,我想直接使用来自Erlang控制台的include。

我试图在模块中使用一些函数。 我已经从控制台编译了erl文件。 但是,如果没有访问hrl文件,我想要使用的函数就无法工作。

有什么建议?

“但是,如果没有访问hrl文件,我想要使用的功能就无法运行。”

这不可能是真的,但是从这里我会猜测你想要访问hrl文件中你没有(通常)在shell中的记录。

如果你这样做rr(MODULE)你会加载定义的所有记录MODULE (包括那些由包括一个包含文件中定义MODULE )。

然后,您可以从shell执行所需的一切。

(您可能想要进行测试的另一件事是将行-compile(export_all)到您的erl文件。丑陋,但有时用于测试。)

你试过compile:file选项吗? 您可以传递要包含的模块列表:

compile:file("myfile.erl", [{i, "/path/1/"}, {i, "/path/2/"}])

jsonerl.hrl不包含任何函数是没有价值的。 它包含宏。 据我所知,宏是Erlang中仅编译时的构造。

使它们可用的最简单方法是自己创建一个.erl文件,它实际上声明了根据宏实现的函数。 也许是这样的:

-module(jsonerl_helpers).
-include("jsonerl.hrl").

record_to_struct_f(RecordName, Record) ->
    ?record_to_struct(RecordName, Record).

...编译后,您可以调用:

jsonerl_helpers:record_to_struct_f(RecordName, Record)

我不知道为什么作者选择将它们作为宏来实现; 这看起来很奇怪,但我确信他有他的理由。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM