C40*_*404 4 alias module elixir
根据http://elixir-lang.org/getting-started/alias-require-and-import.html#aliases
我应该能够使用此代码:
defmodule A do
alias A.B, as: C
defmodule B do
defstruct name: ""
end
end
Run Code Online (Sandbox Code Playgroud)
iex(1)> %C{}
但相反,我有这个错误:
** (CompileError) iex:1: C.__struct__/0 is undefined, cannot expand struct C
知道我在这里缺少什么吗?
编辑:此处简化了模块命名的示例
这仅适用于定义别名的模块,例如:
defmodule A do
alias A.B, as: C
defmodule B do
defstruct name: ""
end
def new do
%C{}
end
end
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
iex(6)> A.new
%A.B{name: ""}
Run Code Online (Sandbox Code Playgroud)
如果您在那里键入别名,这也适用于iex:
iex(7)> alias A.B, as: C
nil
iex(8)> %C{}
%A.B{name: ""}
Run Code Online (Sandbox Code Playgroud)