Elixir 理解別名

2023-12-15 14:38 更新

這時,你可能會想知道:究竟什么是Elixir中的別名,它是如何運作的?

Elixir中的別名是首字母大寫的id(例如String,Keyword等等),在編譯時會被轉(zhuǎn)化成原子.舉個例子,String別名默認轉(zhuǎn)化成原子:"Elixir.String":

iex> is_atom(String)
true
iex> to_string(String)
"Elixir.String"
iex> :"Elixir.String" == String
true

使用?alias/2?命令,我們可以簡單地修改別名要轉(zhuǎn)化成的原子.

別名轉(zhuǎn)化成原子是因為在Erlang虛擬機中模塊總是用原子來代表.例如,這是我們調(diào)用Erlang模塊的機制:

iex> :lists.flatten([1, [2], 3])
[1, 2, 3]

這也是我們之所以能動態(tài)地在一個模塊中調(diào)用給定的函數(shù):

iex> mod = :lists
:lists
iex> mod.flatten([1, [2], 3])
[1, 2, 3]

我們簡單地使用原子?:list?調(diào)用了函數(shù)?flatten.?


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號