我有靈藥該模塊與屬性外:接入模塊屬性模塊
defmodule MyAwesomeModule do
@awesome_number 7
# other stuff...
end
我無法訪問@awesome_number
模塊外。我已經使用Module.get_attribute/2
方法試過,但它拋出這個錯誤:
iex(79)> Module.get_attribute(MyAwesomeModule, :awesome_number)
** (ArgumentError) could not call get_attribute on module MyAwesomeModule because it was already compiled
(elixir) lib/module.ex:1101: Module.assert_not_compiled!/2
(elixir) lib/module.ex:1016: Module.get_attribute/3
所以現在,我在包裝方法的模塊屬性來訪問它,但它並沒有真正做感覺到我。我可以簡單地使用該方法,並停止使用該屬性一起:
defmodule MyAwesomeModule do
@awesome_number 7
def awesome_number, do: @awesome_number
# other stuff...
end
所以我的問題是,是有這樣做的更好/有道?
嗯。海事組織似乎是一個非常薄弱的原因。我沒有看到其他使用模塊屬性的其他用法(除了文檔,標籤等...) – Sheharyar
Elixir的Plug庫是一個很好的使用「accumulate:true」模塊屬性的例子。如果您想在源代碼中挖掘更多內容,請點擊此鏈接https://github.com/elixir-lang/plug/blob/19f53a67e672152a7393611681431c1e0ec1be04/lib/plug/builder.ex#L121 – ventsislaf