c("user.exs")
編譯在存儲器中的文件,並同時h/1
目前需要(下面詳細說明)的光束文件存在於磁盤工作不寫字節碼(.beam文件)到磁盤。您可以c
存儲生成的字節碼在當前目錄中,這將使h/1
工作,c("user.exs", ".")
:
$ 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_docs/2
獲取該模塊調用:code.get_object_code/1
的文檔。 :code.get_object_code/1
根據its docs,「在代碼路徑中搜索模塊模塊的目標代碼。如果成功則返回{Module, Binary, Filename}
,否則返回error
。」
將文件的擴展名更改爲'.ex'。 – mudasobwa
@mudasobwa問題依然存在,沒有什麼不同。 –
通常,一個.exs不會被編譯(這是一個腳本文件)。所以@ mudasobwa的建議是一個很好的建議。但如果你不使用混合文件,那麼我建議你添加一個。 –