2016-09-19 1 views
3

Ich versuche Strukturen zu arbeiten, aber keines der dokumentierten Beispiele im Internet oder gedruckte Bücher funktionieren.Elixir: Kann nicht auf Struktur zugreifen

Dieses Beispiel auf der Website (https://www.tutorialspoint.com/elixir/elixir_structs.htm) auch das gleiche Problem zeigt:

defmodule User do 
    defstruct name: "John", age: 27 
end 

john = %User{} 

#To access name and age of John, 
IO.puts(john.name) 
IO.puts(john.age) 

ich die Fehlermeldung erhalten, kann nicht struct Benutzer zugreifen können, wurde die Struktur noch nicht definiert oder die Struktur in der gleichen zugegriffen wird Kontext, der es definiert.

Antwort

9

Sie versuchen wahrscheinlich, dies mit elixir <filename.exs> auszuführen, während das Buch, in dem Sie möglicherweise ähnlichen Code gesehen haben, höchstwahrscheinlich den Code in iex eingegeben hat. (Bearbeiten: Der Code auf der Seite, mit der Sie verlinkt haben, wurde direkt aus dem offiziellen Lernprogramm (http://elixir-lang.org/getting-started/structs.html) entnommen, welches ist und diesen Code in iex eingibt). Dies funktioniert in iex aber nicht in einem exs Skript; Dies ist eine Einschränkung der Art und Weise wie Elixir "Skripte" kompiliert und ausgewertet werden.

ich den Code in einer anderen Funktion in der Regel wickeln (und möglicherweise ein anderes Modul), und dass am Ende aufrufen, wenn ich erstellen müssen und die Verwendung structs in exs Skripte:

$ cat a.exs 
defmodule User do 
    defstruct name: "John", age: 27 
end 

defmodule Main do 
    def main do 
    john = %User{} 
    IO.puts(john.name) 
    IO.puts(john.age) 
    end 
end 

Main.main 
$ elixir a.exs 
John 
27 
Verwandte Themen