私は構造体を定義しようとしている。このモジュールがあります。なぜエラー - 未定義の関数defstruct
defmodule A do
defmodule B do
defstruct :id, :name
end
end
なぜエラー?
undefined function defstruct/2
このエラーはなぜですか?
私は構造体を定義しようとしている。このモジュールがあります。なぜエラー - 未定義の関数defstruct
defmodule A do
defmodule B do
defstruct :id, :name
end
end
なぜエラー?
undefined function defstruct/2
このエラーはなぜですか?
エリクサーはそれがundefined function defstruct/2
で/2一部だ、2つの引数でdefstruct
を呼び出すようdefstruct :id, :name
を解釈します。あなたが何をしたいか
はdefstructする単一の引数、フィールド名のリストを渡すことです:
defmodule A do
defmodule B do
defstruct [:id, :name]
end
end
ちょうどその問題でofficial documentationをご確認ください。
大括弧なしで表記を使用できますが、明示的でキーワードリストを提供しています。たとえば、デフォルト値があります。
あなたのケースでは、:id, :name
はキーワードリストではないので、コンパイラが2つの引数を指定するというエラーが発生します。
あなたが希望の場合:それは完全に正常に動作します
defmodule A do
defstruct id: nil, name: nil
end
。
明示的にリストを使用してください。