で解決策を試しているときに、特定の用途.erlang
の解決策を見つけました。rr/1
シェルのマンページから:
シェルでのレコードの読み取りと印刷のサポートがいくつかあります。コンパイル中、レコード式はタプル式に変換されます。実行時には、タプルが実際にレコードを表しているかどうかはわかりません。また、コンパイラが使用するレコード定義も実行時に利用できません。したがって、可能な場合にレコード構文を読み取り、タプルをレコードとして出力するには、シェル自体でレコード定義を維持する必要があります。レコードの読み取り、定義、忘却、一覧表示、および印刷のためのシェル コマンドについては、以下で説明します。各ジョブには、独自の一連のレコード定義があることに注意してください。モジュール shell_default および user_default (ロードされている場合) 内のレコード定義を容易にするために、新しいジョブが開始されるたびに読み取られます。たとえば、次の行を追加します
-include_lib("kernel/include/file.hrl").
を user_default に変更すると、file_info の定義がシェルですぐに使用できるようになります。
明確にするために、いくつかの例を追加します。
ファイルfoo.hrl
:
-record(foo, {bar, baz=5}).
ファイル: user_default.erl
:
-module(user_default).
-compile(export_all).
-include("foo.hrl"). % include all relevant record definition headers here
%% more stuff probably ...
シェルで試してみましょう:
$ erl
Erlang R13B04 (erts-5.7.5) [source] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]
Eshell V5.7.5 (abort with ^G)
1> #foo{}.
#foo{bar = undefined,baz = 5}
→ シェルはレコードを知っていますfoo.hrl