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