簡體   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