【发布时间】:2015-11-04 23:43:56
【问题描述】:
由于一旦编译模块就内联了属性,我假设它们的值是恒定的。如果可能的话,我想根据以前创建的属性来定义一个属性。我也希望能够从外部访问它们,我目前的做法是这样的
@required_fields ~w(email)
@optional_fields ~w(password role name last_name age country)
def required_fields, do: @required_fields
def optional_fields, do: @optional_fields
@all_fields required_fields ++ optional_fields
def all_fields, do: @all_fields
但我收到此错误
== 文件 web/models/user.ex 上的编译错误 == ** (CompileError) web/models/user.ex:22: 未定义函数 required_fields/0 (elixir) 扩展宏:Kernel.@/1 web/models/user.ex:22:AristaServer.User(模块) (elixir) lib/kernel/parallel_compiler.ex:97: Kernel.ParallelCompiler.spawn_compilers/8 中的匿名 fn/4
有什么方法可以达到类似的效果吗?我不想每次都重新计算all_fields 列表,似乎很浪费。另外,我不想将两个列表都复制并传递到第三个列表中,这看起来很容易出错。
【问题讨论】:
标签: elixir