c("user.exs")
kompiliert die Datei im Speicher und schreibt nicht den Bytecode (.beam-Datei) auf der Festplatte während h/1
zur Zeit erfordert (Details siehe unten), um die Strahl-Datei vorhanden sein, auf der Festplatte zu arbeiten. Sie können c
speichern die erzeugte Bytecode im aktuellen Verzeichnis machen, die h/1
Arbeit mit c("user.exs", ".")
machen:
$ 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
setzt auf Code.get_docs/2
die Dokumentation zu holen, die :code.get_object_code/1
auf dem Modul aufruft. :code.get_object_code/1
nach its docs, "Durchsucht den Codepfad nach dem Objektcode des Moduls Module. Gibt {Module, Binary, Filename}
zurück, wenn erfolgreich, andernfalls error
."
Ändern Sie die Erweiterung der Datei zu ".ex". – mudasobwa
@mudasobwa Problem bleibt, nicht anders. –
Normalerweise wird eine .exs nicht kompiliert (es ist eine Skriptdatei). So @ Mudasobwa Vorschlag ist ein guter. Aber wenn Sie keine Mix-Datei verwenden, würde ich vorschlagen, dass Sie eine hinzufügen. –