[英]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.