W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Elixir開發(fā)者經(jīng)常會將模塊屬性當做常量使用:
defmodule MyServer do
@initial_state %{host: "147.0.0.1", port: 3456}
IO.inspect @initial_state
end
注意:與Erlang不同,用戶定義的屬性不會默認存儲在模塊中.其值只在編譯過程中存在.開發(fā)者可以調用
Module.register_attribute/3
來使屬性的表現(xiàn)更接近于Erlang.
試圖訪問一個未定義的屬性將會打印出一個警告:
defmodule MyServer do
@unknown
end
warning: undefined module attribute @unknown, please remove access to @unknown or explicitly set it before access
最后,屬性也可以在函數(shù)內(nèi)部讀取:
defmodule MyServer do
@my_data 14
def first_data, do: @my_data
@my_data 13
def second_data, do: @my_data
end
MyServer.first_data #=> 14
MyServer.second_data #=> 13
注意從函數(shù)內(nèi)部讀取屬性,將會快照它們當前的值.換句話說,該值是在編譯時而非運行時讀取的.正如我們將看到的,這使得屬性可以被用作模塊編譯時的存儲空間.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: