嵌套模块和" @ variable"访问

时间:2017-02-09 09:05:17

标签: elixir

说,我有2个模块。

defmodule Mod1 do
  @var1 123
end


defmodule Mod1.Mod2 do
  def func1 do
    @var1 * 10 # how ????
  end
end

有没有办法访问@ var1而无需在Mod1中为它创建特殊功能?

defmodule Mod1 do
  @var1 123

  def var1_getter do    # only for Mod2
    @var1 123           # any other way???
  end
end

1 个答案:

答案 0 :(得分:4)

  

有没有办法访问@ var1而无需在Mod1中为它创建特殊功能?

不,没有。模块属性仅在编译时存在,如果要公开它们的值,则需要从公共函数返回它。

此外,除了父模块的名称是其子项名称的前缀之外,Elixir中的嵌套模块没有什么特别之处。编译后,他们完全分离了恰好名为Mod1Mod1.Mod2的模块。