c("user.exs")
は、メモリ内のファイルをコンパイルしh/1
が現在動作するようにディスク上に存在する(詳細は下記)ビーム・ファイルを必要とするディスクにバイトコード(.beamファイル)を書き込みません。あなたはc
がc("user.exs", ".")
でh/1
作業を行いますカレントディレクトリに生成されたバイトコードを保存することができます:
$ ls
user.exs
$ cat user.exs
defmodule User do
@moduledoc """
Defines the user struct and functions to handle users.
"""
end
$ iex
Erlang/OTP 19 [erts-8.2] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Interactive Elixir (1.4.2) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> c("user.exs", ".")
[User]
iex(2)> h User
User
Defines the user struct and functions to handle users.
iex(3)>
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
(v)ersion (k)ill (D)b-tables (d)istribution
^C
$ ls
Elixir.User.beam user.exs
h/1
は、モジュール上の:code.get_object_code/1
を呼び出してドキュメントを取得するためにCode.get_docs/2
に依存しています。 :code.get_object_code/1
its docs、 "モジュールモジュールのオブジェクトコードのコードパスを検索します。成功した場合は{Module, Binary, Filename}
を返し、そうでない場合はerror
"を返します。
ファイルの拡張子を '.ex'に変更します。 – mudasobwa
@mudasobwa問題は変わりません。 –
通常、.exsはコンパイルされません(スクリプトファイルです)。だから@ mudasobwaの提案は良いものです。しかし、ミックスファイルを使用していない場合は、追加することをお勧めします。 –