说,我有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
答案 0 :(得分:4)
有没有办法访问@ var1而无需在Mod1中为它创建特殊功能?
不,没有。模块属性仅在编译时存在,如果要公开它们的值,则需要从公共函数返回它。
此外,除了父模块的名称是其子项名称的前缀之外,Elixir中的嵌套模块没有什么特别之处。编译后,他们完全分离了恰好名为Mod1
和Mod1.Mod2
的模块。