当前位置:  开发笔记 > 前端 > 正文

Elixir在子模块上的别名

如何解决《Elixir在子模块上的别名》经验,为你挑选了1个好方法。

根据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

iex(1)> %C{}

但相反,我有这个错误:

** (CompileError) iex:1: C.__struct__/0 is undefined, cannot expand struct C

知道我在这里缺少什么吗?

编辑:此处简化了模块命名的示例



1> Gazler..:

这仅适用于定义别名的模块,例如:

defmodule A do
  alias A.B, as: C

  defmodule B do
    defstruct name: ""
  end

  def new do
    %C{}
  end
end

然后你可以这样做:

iex(6)> A.new
%A.B{name: ""}

如果您在那里键入别名,这也适用于iex:

iex(7)> alias A.B, as: C
nil
iex(8)> %C{}
%A.B{name: ""}

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有