2016-09-19 41 views
3

構造体を動作させようとしていますが、インターネットや印刷物のドキュメントに記載されている例はありません。エリクサー:構造体にアクセスできない

この例のWebサイト(https://www.tutorialspoint.com/elixir/elixir_structs.htm)も同じ問題を示して上:

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) 

私はエラーが構造体のユーザーにアクセスすることはできません取得するには、構造体がまだ定義されていないか、構造体が同じにアクセスされていますそれを定義するコンテキスト

答えて

9

おそらくelixir <filename.exs>を使ってこれを実行しようとしていますが、同様のコードを見たことのある本はおそらくiexにコードを入力しています。 (編集:あなたがリンクしたページのコードは、公式チュートリアル(http://elixir-lang.org/getting-started/structs.html)から直接持ち上げられました。です。コードはiexに入力してください)。これはiexでは機能しますが、exsスクリプトでは機能しません。これはElixirの "スクリプト"をコンパイルして評価する方法の限界です。

私は通常、別の関数(おそらく別のモジュール)内のコードをラップし、私はexsスクリプトで構造体を作成し、使用しなければならないとき最後にそれを呼び出す:

$ 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 
関連する問題